大数据生态圈中风头正旺的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 环境搭建及编译、打包相关推荐

  1. 高通Android智能平台环境搭建_编译流程分析

    高通Android智能平台环境搭建_编译流程分析 高通平台环境搭建,编译,系统引导流程分析 TOC \o \h \z \u 1. 高通平台android开发总结. 7 1.1 搭建高通平台环境开发环境 ...

  2. Scons环境搭建和编译原理概述及嵌入式开发常用模板

    Scons环境搭建和编译原理概述及嵌入式开发常用模板 Scons是用python实现的一个类似makefile的软件构建工具.其官网是SCons: A software construction to ...

  3. -i 可以编译添加多个_大咖说 | 基于 NXP i.MX8 eIQ 环境搭建和编译

    一.前言 NXP 针对 Machine Learning ( ML ) 创建了 eIQ 工具,以方便开发者在 i.MX 系列设备上开发 ML 相关应用. 本篇将会分两个章节,一章节介绍 eIQ 软件, ...

  4. FMT(基于rtthread)开源代码编译 win10下编译环境搭建及编译

    FMT(基于rtthread)开源代码编译 win10下编译环境搭建及编译 什么是Firmament? Firmament (FMT) 是一款基于模型设计 (Model-Based-Design, M ...

  5. 高通平台开发环境搭建、编译、烧录(android5.1以上系统)

    高通平台开发环境搭建.编译.烧录(android5.1以上系统) 以MSN8937为例 1. 安装Ubuntu(12.04LTS以上稳定版本)     安装过程中必须以根用户登录或使用sudo获取ro ...

  6. MTK6795环境搭建与编译

    一. MTK6795介绍 说起MTK6795,已经有很多手机厂商用它来做他们旗舰级的处理器,比如说小米,魅族,乐视等.MT6795 采用八颗 Cortex A53,提供 2.2GHz 的时脉速度并提供 ...

  7. 大数据DTSpark蘑菇云行动之 第一课:Scala语言开发环境搭建

    大数据DTSpark"蘑菇云"行动之 第一课:Scala语言开发环境搭建 第一次听王家林老师的课,感觉很不错,特别是家林老师对技术的那种热情深深的感染了我.希望在以后的日子学有所成 ...

  8. 全志A33开发板的android环境搭建及编译、打包

    转自:http://blog.csdn.net/jangel_lee/article/details/44306621 A33环境搭建编译手册 说明 目录 Ubuntu安装 4 制作Ubuntu的US ...

  9. 高通平台环境搭建,编译,系统引导流程分析 .

    1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通开发板上烧录文件系统 建立高通平台开发环境 高通平台,android和 modem 编译流程分析 高通平台 7620 启动流 ...

  10. OSG+VS2010+win7环境搭建---OsgEarth编译

    OSG+VS2010+win7环境搭建 Win7下 osg+vs2010环境搭建 一.相关准备 a) Osg源码 当前最新版:OpenSceneGraph的3.0.0.zip 下载链接: http:/ ...

最新文章

  1. 批量修改数据映射_Docker 数据卷操作「Docker 系列-6」
  2. 靠Python数据分析已赚10w的本科生
  3. 功能强大的Windows PowerShell
  4. 自行车实现无人驾驶,背后究竟有何“天机”?
  5. zabbix4.0 使用nginx前端安装
  6. cenntos系统配置dns地址_在 Cenntos6.8 下安装 Oracle11g
  7. Retrofit请求数据对错误以及网络异常的处理
  8. 【字体分享】设计师常用的日系中文字体
  9. html里怎么画斜线表头,Word2013中绘制斜线表头的方法
  10. BZOJ 3224: Tyvj 1728 普通平衡树(替罪羊树)
  11. <img> 的 title 和 alt 有什么区别
  12. 迅雷和flashgot 出现AddRef问题
  13. matlab 模糊提取,[转载]Matlab 的fspecial函数用法 图像模糊、提取边缘
  14. .NET发送邮箱(验证码)
  15. DBeaver免费、多平台数据工具
  16. 如何制作 Sketch 插件
  17. [SRM603] WinterAndSnowmen
  18. 深信服面试之 活下去
  19. 我们可以用TeamViewer免费版做什么?
  20. 手机计算机怎么打出无限符号,Win7怎么用搜狗打无限符号|输入法打无限符号方法...

热门文章

  1. 怎么借助Camtasia制作回忆录
  2. 博客地址迁移www.xiangquba.cn
  3. POJ NOI MATH-7827 质数的和与积
  4. HDU 2609 最小表示法
  5. 递归加载无限级分类,虽然我觉得效率不太好。
  6. 深山红叶PE工具箱嫦娥一号纪念版
  7. Pr 入门教程,如何确保剪辑保持同步?
  8. 18 Strings for Mac(Xcode文件翻译工具)
  9. UltraCompare 22 for Mac(文件比较工具)
  10. 如何在Mac上的“终端”中创建自定义功能键?