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>

最下面的plugin是用来编译scala源代码的,毕竟java与scala是二种不同的语言,有各自的sdk和编译器,所以需要专门的maven插件来处理scala的编译。
项目的目录结构,大体跟maven的默认约定一样,只是src下多了一个scala目录,如下图:

这样,java源代码放在/src/java下,scala源代码放在/src/scala下,管理起来也比较清爽,上图中scala下的Hello.scala源代码如下:

package yjmyzz

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

然后java下的HelloWorld.java里就可以调用scala的Hello类:

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,最后打包,妥妥滴!

时间: 2024-11-05 21:56:05

scala + intellij idea 环境搭建及编译、打包的相关文章

Scala &amp; IntelliJ IDEA环境搭建升级版:在JAVA中调用Scala的helloworld

--------------------- 前言 --------------------- 项目关系,希望用Spark GraphX做数据分析及图像展示,但前提是得会spark:spark是基于scala的,scala是基于JAVA的--所以,要想用Spark GraphX,技术堆栈大体上应该是这样的:Java -> Scala -> Spark -> Spark GraphX. JAVA都这么多年了--就不说了,我们从学习Scala开始. -------------------- 说

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

OSG+VS2010+win7环境搭建---OsgEarth编译 转:http://www.cnblogs.com/hnfxs/p/3161261.html Win7下 osg+vs2010环境搭建 一.相关准备 a) Osg源码 当前最新版:OpenSceneGraph的3.0.0.zip 下载链接: http://www.openscenegraph.org/downloads/stable_releases/OpenSceneGraph-3.0/source/OpenSceneGraph-

FFMPEG在嵌入式硬件上应用之 —— 基本环境搭建及编译

前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了.今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家分享一下,顺便做了一下记录以备以后使用时参考. 本文(记录)与目前网上很多关于ffmpeg的文章相比有两个特点: 一.重点不在于ffmpeg的解码部分(这个本来是ffmpeg最大的亮点),为什么?前面说了,这是我以前工作的一个整理.况且关于ffmpeg的解码相关文章非常多了,如果大家感兴趣的话,可以

FFMPEG高级编程第一篇:环境搭建及编译

前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了.今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家分享一下,顺便做了一下记录以备以后使用时参考. 本文(记录)与目前网上很多关于ffmpeg的文章相比有两个特点: 一.重点不在于ffmpeg的解码部分(这个本来是ffmpeg最大的亮点),为什么?前面说了,这是我以前工作的一个整理.况且关于ffmpeg的解码相关文章非常多了,如果大家感兴趣的话,可以

【转】Linux(ubuntu14.04)上编译Android4.4源码的环境搭建及编译全过程

原文网址:http://jileniao.net/linux-android-building.html sublime text让我伤心.本来很信任sublime text的自动保存功能,之前使用一直很给力的,但这次让我伤心欲绝啊. 关于Linux(ubuntu14.04)上编译Android源码的环境搭建详细过程都是在sublime text中编辑好的,无奈,这次的数据丢失让我不得不重新来回想手打一次了.可能很多细节问题,这次重新编辑文章时不会记得那么清晰了,还请有问题的朋友在下面留言给我就

scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld

IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/download/sdk.html 根据自己的机器配置选择合适的IDE: 我这里选择For scala2.11 版本的Windows 32 bit的IDE,单击即下载. scala安装: 安装包下载地址,进入官网:http://www.scala-lang.org/ 进入DOWNLOAD下,选择scala 2.11 版本,单击下载: Windows上安装scala 2.11: 单击运行sca

Tesseract环境搭建及编译安装

Tesseract环境搭建及编译安装 Tesseract源码都是C++源码:对于不咋会C++的人来说,这真是...虽然说语言有相通性,但是...哎!!!!! 分享出来,也希望对大家有所帮助. 环境:win10系统,vs2017 (注:安装vs2017,在vs2017 installer  C++的桌面开发下可选插件选择windows 10 SDK(有多个版本,不知道的情况下选择第一个,防止编译的时候找不到所需要的一些东西) 个人理解:cppan:类似于java的maven,负责管理包: 1.pa

ESP8266-003 esp8266环境搭建与编译

esp8266环境搭建与编译1.开发环境的搭建2.系统启动基本条件3.继接esp8266-002的第六节最小系统4.编译esp8266的SDK 1.开发环境的搭建开发环境下载地址:http:/pan.baidu.com/s/1dD8kEYX(包含编译.编辑.下载等)文档下载论坛:http:/bbs.espressif.com/安信可论坛:http:/www.ai-thinker.com/ 2.系统启动基本条件 1)电源得稳定纯净,电池供电可以解决一切,记得共地.接线尽量短,不要用很长的杜邦线,这

Android环境搭建及Ionic打包(win7)

本人刚刚接触Ionic3,初步进行打包操作,将其遇到的问题和整个流程记录下载,方便以后的巩固,也为小白们提供一个参考.因本人没有appleヽ(ー_ー)ノ,而且使用的是WIN7系统,所以暂时只提供了WIN7的Android环境搭建(Android环境已经搭建好了可直接移至第三步),等我有时间会补上其他的(`?ω?´) ionic项目创建(上一篇):Ionic3环境搭建及创建 Android环境搭建参考地址:https://www.cnblogs.com/puresoul/p/4597211.htm