當前位置:首頁 » 編程軟體 » scala採用指定版本編譯

scala採用指定版本編譯

發布時間: 2023-06-06 16:02:36

『壹』 scala命令是怎麼編譯運行scala程序的

我感覺原來它也只是通過運行一個java命令來運行一個java程序, 其中會把對應的scala依賴的core jar加入classpath, 這個java程序最終會調用scala的java程序 MainGenericRunner, 這個MainGenericRunner會把scala程序路徑作為一個參數,進而調用scala程序 難怪我不需要配置scala到系統路徑,eclipse的scala插件只需要把這些依賴jar加入classpath也能通過java來編譯scala程序。

『貳』 運行環境jre版本和jar包編譯版本不一致導致:Unsupported major.minor version 52.0

我在本地使用 Intellij Idea 打包了一個 spark 的程序 jar 包,放到linux集群上運行,報錯信息是: Unsupported major.minor version 52.0

本機系統 -> windows10 開發工具 -> Intellij Idea 構建工具 -> maven

集群系統 -> Linux jre -> Java(TM) SE Runtime Environment (build 1.7.0_80-b15)`

根據報錯 log 可以斷定的是由於我本地編譯打包所使用的 jdk 版本和 linux 集群的 jre 版本不一致導致的。stanford parser 和 jdk 版本對應關系為:

可以推斷出是由於我打包編譯時所使用的 jdk 版本是 jdk8,而集群的 jre 是7,才導致的問題。

maven 項目會用 maven-compiler-plugin 默認的 jdk 版本來進行編譯,如果不指明版本就容易出現版本不匹配的問題,可能導致編譯不通過的問題。解決辦法:在 pom 文件中配置 maven-compiler-plugin 插件。

方式一:

方式二:

如豎首果使用 scala 編寫 spark 的程序,在編譯打包時候要注意 scala 的版本號和 jdk 版本的對應關系,同時也要考慮集群上 jre 的版本。比如我的集群上所使用的 jre 的版本號為 7,那麼本機打包編譯的 jdk 版本必須旅搜為 7 ,那麼 scala 版本必須為 2.12 版本以下。

Intellij Idea 設置「開發」運拆纖歷行時所用的 jdk 版本的幾個地方:

如果上圖中 Intellij Idea 的開發運行 jdk 版本配置錯誤,在開發運行編譯的時候會報: Error:java: 無效的源發行版: xx

『叄』 sbt編譯時怎麼匹配scala版本

build.sbt中寫入:

scalaVersion := "2.10.5"

就會使用對應的版本的庫進行編譯

『肆』 apache kafka源碼怎麼編譯

Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.(Kafka是一個分布式的、可分區的(partitioned)、基於備份的(replicated)和commit-log存儲的服務.。它提供了類似於messaging system的特性,但是在設計實現上完全不同)。kafka是一種高吞吐量的分布式發布訂閱消息系統,它有如下特性:
(1)、通過O(1)的磁碟數據結構提供消息的持久化,這種結構對於即使數以TB的消息存儲也能夠保持長時間的穩定性能。
(2)、高吞吐量:即使是非常普通的硬體kafka也可以支持每秒數十萬的消息。
(3)、支持通過kafka伺服器和消費機集群來分區消息。
(4)、支持Hadoop並行數據載入。
一、用Kafka裡面自帶的腳本進行編譯
下載好了Kafka源碼,裡面自帶了一個gradlew的腳本,我們可以利用這個編譯Kafka源碼:
1 # wget http://mirror.bit.e.cn/apache/kafka/0.8.1.1/kafka-0.8.1.1-src.tgz
2 # tar -zxf kafka-0.8.1.1-src.tgz
3 # cd kafka-0.8.1.1-src
4 # ./gradlew releaseTarGz
運行上面的命令進行編譯將會出現以下的異常信息:
01 :core:signArchives FAILED
02
03 FAILURE: Build failed with an exception.
04
05 * What went wrong:
06 Execution failed for task ':core:signArchives'.
07 > Cannot perform signing task ':core:signArchives' because it
08 has no configured signatory
09
10 * Try:
11 Run with --stacktrace option to get the stack trace. Run with
12 --info or --debug option to get more log output.
13
14 BUILD FAILED
這是一個bug(https://issues.apache.org/jira/browse/KAFKA-1297),可以用下面的命令進行編譯
1 ./gradlew releaseTarGzAll -x signArchives
這時候將會編譯成功(在編譯的過程中將會出現很多的)。在編譯的過程中,我們也可以指定對應的Scala版本進行編譯:
1 ./gradlew -PscalaVersion=2.10.3 releaseTarGz -x signArchives
編譯完之後將會在core/build/distributions/裡面生成kafka_2.10-0.8.1.1.tgz文件,這個和從網上下載的一樣,可以直接用。
二、利用sbt進行編譯
我們同樣可以用sbt來編譯Kafka,步驟如下:
01 # git clone https://git-wip-us.apache.org/repos/asf/kafka.git
02 # cd kafka
03 # git checkout -b 0.8 remotes/origin/0.8
04 # ./sbt update
05 [info] [SUCCESSFUL ] org.eclipse.jdt#core;3.1.1!core.jar (2243ms)
06 [info] downloading http://repo1.maven.org/maven2/ant/ant/1.6.5/ant-1.6.5.jar ...
07 [info] [SUCCESSFUL ] ant#ant;1.6.5!ant.jar (1150ms)
08 [info] Done updating.
09 [info] Resolving org.apache.hadoop#hadoop-core;0.20.2 ...
10 [info] Done updating.
11 [info] Resolving com.yammer.metrics#metrics-annotation;2.2.0 ...
12 [info] Done updating.
13 [info] Resolving com.yammer.metrics#metrics-annotation;2.2.0 ...
14 [info] Done updating.
15 [success] Total time: 168 s, completed Jun 18, 2014 6:51:38 PM
16
17 # ./sbt package
18 [info] Set current project to Kafka (in build file:/export1/spark/kafka/)
19 Getting Scala 2.8.0 ...
20 :: retrieving :: org.scala-sbt#boot-scala
21 confs: [default]
22 3 artifacts copied, 0 already retrieved (14544kB/27ms)
23 [success] Total time: 1 s, completed Jun 18, 2014 6:52:37 PM
對於Kafka 0.8及以上版本還需要運行以下的命令:
01 # ./sbt assembly-package-dependency
02 [info] Loading project definition from /export1/spark/kafka/project
03 [warn] Multiple resolvers having different access mechanism configured with
04 same name 'sbt-plugin-releases'. To avoid conflict, Remove plicate project
05 resolvers (`resolvers`) or rename publishing resolver (`publishTo`).
06 [info] Set current project to Kafka (in build file:/export1/spark/kafka/)
07 [warn] Credentials file /home/wyp/.m2/.credentials does not exist
08 [info] Including slf4j-api-1.7.2.jar
09 [info] Including metrics-annotation-2.2.0.jar
10 [info] Including scala-compiler.jar
11 [info] Including scala-library.jar
12 [info] Including slf4j-simple-1.6.4.jar
13 [info] Including metrics-core-2.2.0.jar
14 [info] Including snappy-java-1.0.4.1.jar
15 [info] Including zookeeper-3.3.4.jar
16 [info] Including log4j-1.2.15.jar
17 [info] Including zkclient-0.3.jar
18 [info] Including jopt-simple-3.2.jar
19 [warn] Merging 'META-INF/NOTICE' with strategy 'rename'
20 [warn] Merging 'org/xerial/snappy/native/README' with strategy 'rename'
21 [warn] Merging 'META-INF/maven/org.xerial.snappy/snappy-java/LICENSE'
22 with strategy 'rename'
23 [warn] Merging 'LICENSE.txt' with strategy 'rename'
24 [warn] Merging 'META-INF/LICENSE' with strategy 'rename'
25 [warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
26 [warn] Strategy 'discard' was applied to a file
27 [warn] Strategy 'rename' was applied to 5 files
28 [success] Total time: 3 s, completed Jun 18, 2014 6:53:41 PM
當然,我們也可以在sbt裡面指定scala的版本:
01 <!--
02 User: 過往記憶
03 Date: 14-6-18
04 Time: 20:20
05 bolg: http://www.iteblog.com
06 本文地址:http://www.iteblog.com/archives/1044
07 過往記憶博客,專注於hadoop、hive、spark、shark、flume的技術博客,大量的干貨
08 過往記憶博客微信公共帳號:iteblog_hadoop
09 -->
10 sbt "++2.10.3 update"
11 sbt "++2.10.3 package"
12 sbt "++2.10.3 assembly-package-dependency"

『伍』 如何保證kafka 的消息機制 ack-fail 源碼跟蹤

Kafka is a distributed, partitioned, replicated commit log service. It provides the functionality of a messaging system, but with a unique design.(Kafka布式、區(partitioned)、基於備份(replicated)commit-log存儲服務.提供類似於messaging system特性,設計實現完全同)kafka種高吞吐量布式發布訂閱消息系統特性:
(1)、通O(1)磁碟數據結構提供消息持久化種結構於即使數TB消息存儲能夠保持間穩定性能
(2)、高吞吐量:即使非普通硬體kafka支持每秒數十萬消息
(3)、支持通kafka伺服器消費機集群區消息
(4)、支持Hadoop並行數據載入
、用Kafka面自帶腳本進行編譯
載Kafka源碼面自帶gradlew腳本我利用編譯Kafka源碼:
1 # wget
2 # tar -zxf kafka-0.8.1.1-src.tgz
3 # cd kafka-0.8.1.1-src
4 # ./gradlew releaseTarGz
運行面命令進行編譯現異信息:
01 :core:signArchives FAILED
02
03 FAILURE: Build failed with an exception.
04
05 * What went wrong:
06 Execution failed for task ':core:signArchives'.
07 > Cannot perform signing task ':core:signArchives' because it
08 has no configured signatory
09
10 * Try:
11 Run with --stacktrace option to get the stack trace. Run with
12 --info or --debug option to get more log output.
13
14 BUILD FAILED
bug()用面命令進行編譯
1 ./gradlew releaseTarGzAll -x signArchives
候編譯功(編譯程現)編譯程我指定應Scala版本進行編譯:
1 ./gradlew -PscalaVersion=2.10.3 releaseTarGz -x signArchives
編譯完core/build/distributions/面kafka_2.10-0.8.1.1.tgz文件網載直接用
二、利用sbt進行編譯
我同用sbt編譯Kafka步驟:
01 # git clone
02 # cd kafka
03 # git checkout -b 0.8 remotes/origin/0.8
04 # ./sbt update
05 [info] [SUCCESSFUL ] org.eclipse.jdt#core;3.1.1!core.jar (2243ms)
06 [info] downloading ...
07 [info] [SUCCESSFUL ] ant#ant;1.6.5!ant.jar (1150ms)
08 [info] Done updating.
09 [info] Resolving org.apache.hadoop#hadoop-core;0.20.2 ...
10 [info] Done updating.
11 [info] Resolving com.yammer.metrics#metrics-annotation;2.2.0 ...
12 [info] Done updating.
13 [info] Resolving com.yammer.metrics#metrics-annotation;2.2.0 ...
14 [info] Done updating.
15 [success] Total time: 168 s, completed Jun 18, 2014 6:51:38 PM
16
17 # ./sbt package
18 [info] Set current project to Kafka (in build file:/export1/spark/kafka/)
19 Getting Scala 2.8.0 ...
20 :: retrieving :: org.scala-sbt#boot-scala
21 confs: [default]
22 3 artifacts copied, 0 already retrieved (14544kB/27ms)
23 [success] Total time: 1 s, completed Jun 18, 2014 6:52:37 PM
於Kafka 0.8及版本需要運行命令:
01 # ./sbt assembly-package-dependency
02 [info] Loading project definition from /export1/spark/kafka/project
03 [warn] Multiple resolvers having different access mechanism configured with
04 same name 'sbt-plugin-releases'. To avoid conflict, Remove plicate project
05 resolvers (`resolvers`) or rename publishing resolver (`publishTo`).
06 [info] Set current project to Kafka (in build file:/export1/spark/kafka/)
07 [warn] Credentials file /home/wyp/.m2/.credentials does not exist
08 [info] Including slf4j-api-1.7.2.jar
09 [info] Including metrics-annotation-2.2.0.jar
10 [info] Including scala-compiler.jar
11 [info] Including scala-library.jar
12 [info] Including slf4j-simple-1.6.4.jar
13 [info] Including metrics-core-2.2.0.jar
14 [info] Including snappy-java-1.0.4.1.jar
15 [info] Including zookeeper-3.3.4.jar
16 [info] Including log4j-1.2.15.jar
17 [info] Including zkclient-0.3.jar
18 [info] Including jopt-simple-3.2.jar
19 [warn] Merging 'META-INF/NOTICE' with strategy 'rename'
20 [warn] Merging 'org/xerial/snappy/native/README' with strategy 'rename'
21 [warn] Merging 'META-INF/maven/org.xerial.snappy/snappy-java/LICENSE'
22 with strategy 'rename'
23 [warn] Merging 'LICENSE.txt' with strategy 'rename'
24 [warn] Merging 'META-INF/LICENSE' with strategy 'rename'
25 [warn] Merging 'META-INF/MANIFEST.MF' with strategy 'discard'
26 [warn] Strategy 'discard' was applied to a file
27 [warn] Strategy 'rename' was applied to 5 files
28 [success] Total time: 3 s, completed Jun 18, 2014 6:53:41 PM
我sbt面指定scala版本:
01 <!--
02 User: 往記憶
03 Date: 14-6-18
04 Time: 20:20
05 bolg:
06 本文址:/archives/1044
07 往記憶博客專注於hadoop、hive、spark、shark、flume技術博客量干貨
08 往記憶博客微信公共帳號:iteblog_hadoop
09 -->
10 sbt "++2.10.3 update"
11 sbt "++2.10.3 package"
12 sbt "++2.10.3 assembly-package-dependency"

『陸』 Scala編程語言簡介

Scala編程語言近來抓住了很多開發者的眼球 如果你粗略瀏覽Scala的網站 你會覺得Scala是一種純粹的面向對象編程語言 而又無縫地結合了命令式和函數式的編程風格 Christopher Diggins認為

不太久之前編程語言還可以毫無疑義地歸類成 命令式 或者 函數式 Scala代表了一個新的語言品種 它抹平了這些人為劃分的界限

根據David Rupp在博客中的說法 Scala可能是下下一代Java 這么高的評價讓人不禁想看看它到底是什麼東西

Scala有幾項關鍵特性表明了它的面向對象的本質 例如 Scala中的每個值都是一個對象 包括基本數據類型(即布爾值 數字等)在內 連函數也是對象 另外 類可以被子類化 而且Scala還提供了基於mixin的乎遲讓組合(mixin based position)

與只支持單繼承的語言相比 Scala具有更廣泛意義上的類重用 Scala允許定義新類的時候重用 一個類中新增的成員定義(即相較於其父類的差異之處) Scala稱之為mixin類組合

Scala還包含了若干函數式語言的關鍵概念 包括高階函數(Higher Order Function) 局部套用(Currying) 嵌套函數(Nested Function) 序列解讀(Sequence Comprehensions)等等

Scala是靜態類型的 這就允許它提供泛型類 內部類 甚至多態方法(Polymorphic Method) 另外值得一提的是 Scala被特意設計成能夠與Java和 NET互操作 Scala當前版本還不能在 NET上運行(雖然上一版可以) 但按照計劃將來可以在 NET上運行

Scala可以與Java互操作 它用scalac這個編譯器把源文件編譯成Java的class文件(即在JVM上運行的位元組碼) 你可以從Scala中調用所有的Java類庫 也同樣可以從Java應用程序中調用Scala的代碼 用David Rupp的話來說

它也可以訪問現存的數之不盡的Java類庫 這讓(潛在地)遷移到Scala更加容易

這讓Scala得以使用為Java 或者 編寫的巨量的Java類庫和框架 Scala會經常性地針對這幾個版本的Java進行測試 Scala可能也可以在更早版本的Java上運行 但沒有經過正式的測試 Scala以BSD許可發布 並且數年前就已經被認為相當穩定了

說了這么多 我們還沒有回答一個問題 為什麼我要使用Scala? Scala的設計始終貫穿著一個理念

創造一種更好地支持組件的語言 (《The Scala Programming Language》 Donna Malayeri)

也就是說軟體應該由可重用的部件構造而成 Scala旨在提供一種編程語言 能夠統一和一般化分別來自面向對象和函數式兩種不同風格的關鍵概念歲局

藉著這個目標與設計 Scala得以提供一些出眾的特性 包括

* 面旦叢向對象風格

* 函數式風格

* 更高層的並發模型

Scala把Erlang風格的基於actor的並發帶進了JVM 開發者現在可以利用Scala的actor模型在JVM上設計具伸縮性的並發應用程序 它會自動獲得多核心處理器帶來的優勢 而不必依照復雜的Java線程模型來編寫程序

* 輕量級的函數語法

o 高階

o 嵌套

o 局部套用(Currying)

o 匿名

* 與XML集成

o 可在Scala程序中直接書寫XML

o 可將XML轉換成Scala類

* 與Java無縫地互操作

Scala的風格和特性已經吸引了大量的開發者 比如Debasish Ghosh就覺得

我已經把玩了Scala好一陣子 可以說我絕對享受這個語言的創新之處

lishixin/Article/program/Java/hx/201311/26873

『柒』 scala編譯後的文件是以什麼結尾

scala編譯後的文件是以.class結尾。
開頭包含類似package聲明的scala代碼直接在scala命令行用:load指令載入會出錯。如果在scala命令行想調用自己在ide寫好的類時(大多數情況下你的類會用到外部包,比如spark之類的),有三種方法:
將你在ide寫好的project在scala下進行編譯,之後通過Main調用。
打包整個項目為jar,通過scala -classpath載入後,在scala中import進行調用。
去掉package聲明,並且將依賴包通過scala -classpath載入後,再使用:load 載入你的內容。

『捌』 scala命令是怎麼編譯運行scala程序的

scala命令是怎麼編譯運行scala程序的
所以既要使用到Unicode的大的字型檔表,又要節省存儲空間,就需要對Unicode再編碼,且是根據(Unicode編碼.n)內容 不定長編碼 --- UTF-8是一種對(Unicode編碼.n)的不定長字元編碼方案。

UTF-8字元編碼方案決定了(Unicode編碼.n)在計算機內的存儲方式。
(Unicode編碼.n)經過UTF-8字元編碼方案編碼之後也可以看做是一個新的二進制數字,(通常用十六進制數字字元表示這個新的二進制的值,它們直接的關系是這個十六進制字元表示的值 等於 這個二進制數字的值)。

熱點內容
lol一區為什麼伺服器好卡 發布:2025-02-12 09:02:22 瀏覽:628
安卓運營商cm是哪個版本 發布:2025-02-12 09:00:00 瀏覽:514
pythonmd5校驗 發布:2025-02-12 08:51:00 瀏覽:469
編程題解析 發布:2025-02-12 08:40:30 瀏覽:453
bilibi手機緩存目錄在 發布:2025-02-12 08:33:11 瀏覽:457
聽ti密碼是多少 發布:2025-02-12 08:22:15 瀏覽:288
淘寶上傳視頻憑證 發布:2025-02-12 08:06:46 瀏覽:878
java畫 發布:2025-02-12 08:01:00 瀏覽:549
光遇安卓官服是在哪裡下載 發布:2025-02-12 07:47:47 瀏覽:648
安卓手機如何關閉程序打開廣告 發布:2025-02-12 07:31:06 瀏覽:469