国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

scala + intellij idea 環(huán)境搭建及編譯、打包

2019-11-11 04:00:32
字體:
供稿:網(wǎng)友

大數(shù)據(jù)生態(tài)圈中風(fēng)頭正旺的Spark項(xiàng)目完全是采用Scala語言開發(fā)的,不懂Scala的話,基本上就沒法玩下去了。Scala與java編譯后的class均可以運(yùn)行于JVM之上,就好象.NET中F#與C#的關(guān)系。下面進(jìn)入正題:

1、下載scala sdk

http://www.scala-lang.org/download/ 直接到這里下載sdk,目前最新的穩(wěn)定版為2.11.7,下載后解壓就行

(后面在intellij idea中創(chuàng)建.scala后綴源代碼時(shí),ide會智能感知并提示你設(shè)置scala sdk,按提示指定sdk目錄為解壓目錄即可)

 

2、下載scala for intellij idea的插件

如上圖,直接在plugins里搜索Scala,然后安裝即可,如果不具備上網(wǎng)環(huán)境,或網(wǎng)速不給力。也可以直接到http://plugins.jetbrains.com/plugin/?idea&id=1347手動(dòng)下載插件的zip包,手動(dòng)下載時(shí),要特別注意版本號,一定要跟本機(jī)的intellij idea的版本號匹配,否則下載后無法安裝。下載完成后,在上圖中,點(diǎn)擊“Install plugin from disk...”,選擇插件包的zip即可。

 

3、如何跟maven整合

網(wǎng)上有一堆教程講idea如何new module或new PRoject一步一步來創(chuàng)建scala工程,在這里我不推薦這個(gè)。原因是現(xiàn)在主流的開發(fā)環(huán)境,大多數(shù)是采用maven來構(gòu)建項(xiàng)目的,所以建議大家用maven+plugin的方式來構(gòu)建scala應(yīng)用,另外,就象VB.NET/C#/F#可同時(shí)在一個(gè)項(xiàng)目中使用,最大限度發(fā)揮各語種特長一樣,java與可以與scala在一個(gè)項(xiàng)目中混合使用。見下面的pom.xml示例:

復(fù)制代碼
 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 5     <modelVersion>4.0.0</modelVersion> 6  7     <groupId>yjmyzz</groupId> 8     <artifactId>MyScala</artifactId> 9     <version>1.0</version>10 11     <dependencies>12         <dependency>13             <groupId>org.scala-lang</groupId>14             <artifactId>scala-library</artifactId>15             <version>2.11.7</version>16         </dependency>17         <dependency>18             <groupId>org.scala-lang</groupId>19             <artifactId>scala-compiler</artifactId>20             <version>2.11.7</version>21         </dependency>22         <dependency>23             <groupId>org.scala-lang</groupId>24             <artifactId>scala-reflect</artifactId>25             <version>2.11.7</version>26         </dependency>27         <dependency>28             <groupId>log4j</groupId>29             <artifactId>log4j</artifactId>30             <version>1.2.12</version>31         </dependency>32         <dependency>33             <groupId>com.google.collections</groupId>34             <artifactId>google-collections</artifactId>35             <version>1.0</version>36         </dependency>37     </dependencies>38 39     <build>40         <plugins>41             <plugin>42                 <groupId>org.scala-tools</groupId>43                 <artifactId>maven-scala-plugin</artifactId>44                 <version>2.15.2</version>45                 <executions>46                     <execution>47                         <goals>48                             <goal>compile</goal>49                             <goal>testCompile</goal>50                         </goals>51                     </execution>52                 </executions>53             </plugin>54         </plugins>55     </build>56 </project>復(fù)制代碼

最下面的plugin是用來編譯scala源代碼的,畢竟java與scala是二種不同的語言,有各自的sdk和編譯器,所以需要專門的maven插件來處理scala的編譯。項(xiàng)目的目錄結(jié)構(gòu),大體跟maven的默認(rèn)約定一樣,只是src下多了一個(gè)scala目錄,如下圖:

這樣,java源代碼放在/src/java下,scala源代碼放在/src/scala下,管理起來也比較清爽,上圖中scala下的Hello.scala源代碼如下:

1234567package yjmyzz class Hello {  def sayHello(x: String): Unit = {    println("hello," + x);  }}

 然后java下的HelloWorld.java里就可以調(diào)用scala的Hello類:

123456789package yjmyzz; public class HelloWorld {     public static void main(String[] args){        Hello h = new Hello();        h.sayHello("scala");    }}

 

4、scala項(xiàng)目maven的編譯打包

如果直接運(yùn)行mvn clean package ,會杯具的發(fā)現(xiàn)

[ERROR] /Users/jimmy/Work/IdeaProjects/Default/MyScala/src/main/java/yjmyzz/HelloWorld.java:[7,9] cannot find symbol[ERROR] symbol:   class Hello[ERROR] location: class yjmyzz.HelloWorld

原因是mvn clean package默認(rèn)只處理java源代碼的編譯、打包,而不管scala,所以編譯時(shí)遇到Hello這個(gè)由scala語言編寫的class,此時(shí)scala還沒編譯生成class,所以找不到相應(yīng)的調(diào)用入口。

解決辦法:

mvn clean scala:compile compile package

如上,在compile前加入scala:compile,這是maven-scala-plugin插件提供的選項(xiàng),表示編譯scala,這樣一來,先編譯scala,再編譯java,最后打包,妥妥滴!

 

最后:gradle環(huán)境下,可參考我的另一篇文章gradle項(xiàng)目中如何同時(shí)支持java與scala混合使用?


發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 景德镇市| 和静县| 新田县| 阜城县| 大新县| 德化县| 偃师市| 龙泉市| 岳阳市| 七台河市| 博客| 师宗县| 洪湖市| 新源县| 万载县| 江津市| 三河市| 漳州市| 双峰县| 墨竹工卡县| 西华县| 兰州市| 朝阳县| 寻乌县| 元谋县| 凤山市| 班玛县| 平阳县| 依兰县| 寿阳县| 隆昌县| 招远市| 田阳县| 五莲县| 巴马| 永安市| 台前县| 五华县| 沙坪坝区| 成都市| 荣昌县|