Scala + Intellij IDEA 环境搭建及编译、打包
大数据生态圈中风头正旺的Spark项目完全是采用Scala语言开发的,不懂Scala的话,基本上就没法玩下去了。Scala与Java编译后的class均可以运行于JVM之上,就好象.NET中F#与C#的关系。下面进入正题:
1、下载scala sdk
http://www.scala-lang.org/download/ 直接到这里下载sdk,目前最新的稳定版为2.11.7,下载后解压就行
(后面在intellij idea中创建.scala后缀源代码时,ide会智能感知并提示你设置scala sdk,按提示指定sdk目录为解压目录即可)
2、下载scala for intellij idea的插件
如上图,直接在plugins里搜索Scala,然后安装即可,如果不具备上网环境,或网速不给力。也可以直接到http://plugins.jetbrains.com/plugin/?idea&id=1347手动下载插件的zip包,手动下载时,要特别注意版本号,一定要跟本机的intellij idea的版本号匹配,否则下载后无法安装。下载完成后,在上图中,点击“Install plugin from disk...”,选择插件包的zip即可。
3、如何跟maven整合
网上有一堆教程讲idea如何new module或new project一步一步来创建scala工程,在这里我不推荐这个。原因是现在主流的开发环境,大多数是采用maven来构建项目的,所以建议大家用maven+plugin的方式来构建scala应用,另外,就象VB.NET/C#/F#可同时在一个项目中使用,最大限度发挥各语种特长一样,java与可以与scala在一个项目中混合使用。见下面的pom.xml示例:
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>
View Code
最下面的plugin是用来编译scala源代码的,毕竟java与scala是二种不同的语言,有各自的sdk和编译器,所以需要专门的maven插件来处理scala的编译。
项目的目录结构,大体跟maven的默认约定一样,只是src下多了一个scala目录,如下图:
这样,java源代码放在/src/java下,scala源代码放在/src/scala下,管理起来也比较清爽,上图中scala下的Hello.scala源代码如下:
1
2
3
4
5
6
7
|
package yjmyzz
class Hello {
def sayHello(x : String) : Unit = {
println( "hello," + x);
}
}
|
然后java下的HelloWorld.java里就可以调用scala的Hello类:
1
2
3
4
5
6
7
8
9
|
package yjmyzz;
public class HelloWorld {
public static void main(String[] args){
Hello h = new Hello();
h.sayHello( "scala" );
}
}
|
4、scala项目maven的编译打包
如果直接运行mvn clean package ,会杯具的发现
[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默认只处理java源代码的编译、打包,而不管scala,所以编译时遇到Hello这个由scala语言编写的class,此时scala还没编译生成class,所以找不到相应的调用入口。
解决办法:
mvn clean scala:compile compile package
如上,在compile前加入scala:compile,这是maven-scala-plugin插件提供的选项,表示编译scala,这样一来,先编译scala,再编译java,最后打包,妥妥滴!
最后:gradle环境下,可参考我的另一篇文章Gradle项目中如何同时支持Java与Scala混合使用?
使用IntelliJ IDEA 13搭建Android集成开发环境图文教程 http://www.linuxidc.com/Linux/2015-09/123416.htm
IntelliJ IDEA 12 创建Web项目图文详细教程 http://www.linuxidc.com/Linux/2013-05/84213.htm
用IntelliJ IDEA开发Android程序图文教程 http://www.linuxidc.com/Linux/2013-03/81471.htm
IntelliJ IDEA 12开发haXe NME应用配置指南 http://www.linuxidc.com/Linux/2013-01/77227.htm
IntelliJ IDEA运行Play Framework的test mode http://www.linuxidc.com/Linux/2013-07/87694.htm
Ubuntu 13.04 安装IntelliJ IDEA 12 http://www.linuxidc.com/Linux/2013-11/93014.htm
IntelliJ IDEA 12创建Maven管理的Java Web项目(图解) http://www.linuxidc.com/Linux/2014-04/99687p2.htm
IntelliJ IDEA 常用快捷键列表及技巧大全 http://www.linuxidc.com/Linux/2015-04/116398.htm
IntelliJ IDEA 的详细介绍:请点这里
IntelliJ IDEA 的下载地址:请点这里
Scala + Intellij IDEA 环境搭建及编译、打包相关推荐
- 高通Android智能平台环境搭建_编译流程分析
高通Android智能平台环境搭建_编译流程分析 高通平台环境搭建,编译,系统引导流程分析 TOC \o \h \z \u 1. 高通平台android开发总结. 7 1.1 搭建高通平台环境开发环境 ...
- Scons环境搭建和编译原理概述及嵌入式开发常用模板
Scons环境搭建和编译原理概述及嵌入式开发常用模板 Scons是用python实现的一个类似makefile的软件构建工具.其官网是SCons: A software construction to ...
- -i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译
一.前言 NXP 针对 Machine Learning ( ML ) 创建了 eIQ 工具,以方便开发者在 i.MX 系列设备上开发 ML 相关应用. 本篇将会分两个章节,一章节介绍 eIQ 软件, ...
- FMT(基于rtthread)开源代码编译 win10下编译环境搭建及编译
FMT(基于rtthread)开源代码编译 win10下编译环境搭建及编译 什么是Firmament? Firmament (FMT) 是一款基于模型设计 (Model-Based-Design, M ...
- 高通平台开发环境搭建、编译、烧录(android5.1以上系统)
高通平台开发环境搭建.编译.烧录(android5.1以上系统) 以MSN8937为例 1. 安装Ubuntu(12.04LTS以上稳定版本) 安装过程中必须以根用户登录或使用sudo获取ro ...
- MTK6795环境搭建与编译
一. MTK6795介绍 说起MTK6795,已经有很多手机厂商用它来做他们旗舰级的处理器,比如说小米,魅族,乐视等.MT6795 采用八颗 Cortex A53,提供 2.2GHz 的时脉速度并提供 ...
- 大数据DTSpark蘑菇云行动之 第一课:Scala语言开发环境搭建
大数据DTSpark"蘑菇云"行动之 第一课:Scala语言开发环境搭建 第一次听王家林老师的课,感觉很不错,特别是家林老师对技术的那种热情深深的感染了我.希望在以后的日子学有所成 ...
- 全志A33开发板的android环境搭建及编译、打包
转自:http://blog.csdn.net/jangel_lee/article/details/44306621 A33环境搭建编译手册 说明 目录 Ubuntu安装 4 制作Ubuntu的US ...
- 高通平台环境搭建,编译,系统引导流程分析 .
1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流 ...
- OSG+VS2010+win7环境搭建---OsgEarth编译
OSG+VS2010+win7环境搭建 Win7下 osg+vs2010环境搭建 一.相关准备 a) Osg源码 当前最新版:OpenSceneGraph的3.0.0.zip 下载链接: http:/ ...
最新文章
- 批量修改数据映射_Docker 数据卷操作「Docker 系列-6」
- 靠Python数据分析已赚10w的本科生
- 功能强大的Windows PowerShell
- 自行车实现无人驾驶,背后究竟有何“天机”?
- zabbix4.0 使用nginx前端安装
- cenntos系统配置dns地址_在 Cenntos6.8 下安装 Oracle11g
- Retrofit请求数据对错误以及网络异常的处理
- 【字体分享】设计师常用的日系中文字体
- html里怎么画斜线表头,Word2013中绘制斜线表头的方法
- BZOJ 3224: Tyvj 1728 普通平衡树(替罪羊树)
- <img> 的 title 和 alt 有什么区别
- 迅雷和flashgot 出现AddRef问题
- matlab 模糊提取,[转载]Matlab 的fspecial函数用法 图像模糊、提取边缘
- .NET发送邮箱(验证码)
- DBeaver免费、多平台数据工具
- 如何制作 Sketch 插件
- [SRM603] WinterAndSnowmen
- 深信服面试之 活下去
- 我们可以用TeamViewer免费版做什么?
- 手机计算机怎么打出无限符号,Win7怎么用搜狗打无限符号|输入法打无限符号方法...