首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >scala + intellij idea 环境搭建及编译、打包

scala + intellij idea 环境搭建及编译、打包

作者头像
菩提树下的杨过
发布于 2018-01-18 09:33:17
发布于 2018-01-18 09:33:17
3.6K00
代码可运行
举报
运行总次数:0
代码可运行

大数据生态圈中风头正旺的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示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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源代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package yjmyzz

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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混合使用?

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-08-01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
8.3 Spring Boot集成Scala混合Java开发参考资料
本章我们使用Spring Boot集成Scala混合Java开发一个Web性能测试平台。
一个会写诗的程序员
2018/08/20
1.5K0
8.3 Spring Boot集成Scala混合Java开发参考资料
【Maven 官方教程】Building Java Projects
mkdir -p src/main/java/hello on *nix systems
acc8226
2022/05/17
3770
scala-sparkML学习笔记:scala解析json文件
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
MachineLP
2019/09/06
1.5K0
Springboot中使用Scala开发使用SB與Scala
https://github.com/LightSwordSpringBoot/lightsword
一个会写诗的程序员
2018/08/20
1.1K0
从0-1搭建Spark本地开发环境(idea)
https://www.scala-lang.org/download/2.11.12.html
Eights
2020/07/10
3.4K0
从0-1搭建Spark本地开发环境(idea)
2021年大数据常用语言Scala(二十八):scala面向对象 MAVEN依赖和类
添加一个main方法,并创建Customer类的对象,并给对象赋值,打印对象中的成员,调用成员方法
Lansonli
2021/10/11
4240
【Spark Mllib】逻辑回归——垃圾邮件分类器与maven构建独立项目
配置的时候要注意spark 和 scala 的版本,可以打开spark-shell 观察:
小爷毛毛_卓寿杰
2019/02/13
9270
【Spark Mllib】逻辑回归——垃圾邮件分类器与maven构建独立项目
rpc框架: thrift/avro/protobuf 之maven插件生成java类
thrift、avro、probobuf 这几个rpc框架的基本思想都差不多,先定义IDL文件,然后由各自的编译器(或maven插件)生成目标语言的源代码,但是,根据idl生成源代码这件事,如果每次都
菩提树下的杨过
2018/01/18
2.8K0
rpc框架: thrift/avro/protobuf 之maven插件生成java类
Scala基础概述
下载Scala下载地址 https://www.scala-lang.org/download/
羊羽shine
2019/07/28
5180
maven入门——环境搭建
Maven是一个采用纯Java编写的开 源项目管理工具。Maven采用了一种被称之为project object model (POM)概念来管理项目,所有的项目配置信息都被定义在一个叫做POM.xml的文件中,通过该文件,Maven可以管理项目的整个声明周期,包括编 译,构建,测试,发布,报告等等。目前Apache下绝大多数项目都已经采用Maven进行管理。而Maven本身还支持多种插件,可以方便更灵活的控制项目。
程序新视界
2022/11/30
4680
maven入门——环境搭建
基于Scala的并发编程模型Akka
        Akka 是 JVM 平台上构建高并发、分布式和容错应用的工具包和运行时环境。Akka用Scala 语言编写,同时提供了 Scala 、JAVA 的开发接口。
Java架构师必看
2021/05/14
1.3K0
基于Scala的并发编程模型Akka
Flink 开发环境搭建
Flink 分别提供了基于 Java 语言和 Scala 语言的 API ,如果想要使用 Scala 语言来开发 Flink 程序,可以通过在 IDEA 中安装 Scala 插件来提供语法提示,代码高亮等功能。打开 IDEA , 依次点击 File => settings => plugins 打开插件安装页面,搜索 Scala 插件并进行安装,安装完成后,重启 IDEA 即可生效。
每天进步一点点
2022/07/27
7400
Flink 开发环境搭建
Spark2.x学习笔记:6、在Windows平台下搭建Spark开发环境(Intellij IDEA)
本文介绍了如何使用IntelliJ IDEA和Scala进行Spark编程,包括创建Scala和Spark项目、安装和配置Scala和Spark、编写Spark程序等步骤。
程裕强
2018/01/02
3.1K0
Spark2.x学习笔记:6、在Windows平台下搭建Spark开发环境(Intellij IDEA)
flink 简单入门
安装 查看java 版本,我的版本是java 8 下载flink,下载地址https://flink.apache.org/downloads.html 下载完了之后,解压并且执行: ./start-
zeekling
2022/06/17
3030
flink 简单入门
跟着官方文档学Maven构建生命周期
Maven内置了三个生命周期:clean、default和site。生命周期是由多个顺序执行的阶段组成,它们的关系和说明如下:
dongfanger
2021/07/01
9370
Maven入门
首先,你需要创建一个项目用来给Maven构建。把注意力集中到Maven上,项目做得尽可能简单。项目结构如下。
_淡定_
2019/04/04
5080
教小老弟 快速掌握 maven插件
Maven 是一个执行插件的框架,每一个任务实际上是由插件完成的。那么我们今天就来聊聊Maven插件。
田维常
2021/01/28
5340
scala-sparkML学习笔记:xgboost进行分布式训练
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
MachineLP
2019/08/31
4.6K0
深入Maven:从入门到精通的全面指南
Apache Maven是一个项目管理和构建工具,主要用于Java项目。它基于项目对象模型(POM),可以通过一套标准化的方式管理项目的构建、依赖和文档。Maven的目标是简化和标准化项目的构建过程,使开发人员可以更专注于编写代码,而不是管理依赖和构建脚本。
九转成圣
2024/06/08
4410
Java基础教程(22)-构建工具Maven的基本使用
JQ实验室
2024/05/13
3470
相关推荐
8.3 Spring Boot集成Scala混合Java开发参考资料
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档