---------------------
前言
---------------------
项目关系,希望用Spark GraphX做数据分析及图像展示,但前提是得会spark;spark是基于scala的,scala是基于JAVA的……所以,要想用Spark GraphX,技术堆栈大体上应该是这样的:Java -> Scala -> Spark -> Spark GraphX。
 
JAVA都这么多年了……就不说了,我们从学习Scala开始。
 
--------------------
说明
--------------------
1)Java配置完成,版本在1.8以上;
因为Scala是基于Java开发的,编译之后生成的class文件也可以远行在JVM上,并被Java调用。
2)IntelliJ IDEA已安装完成(我的版本是:2017.2.2)
3)开发环境:MacOS
 
--------------------
安装、配置Scala
--------------------
1. 安装Scala SDK
先到http://www.scala-lang.org/download/ 下载压缩包scala-2.12.4.tar并解压。
(也可以在IntelliJ IDEA 创建第一个scala源文件时,根据提示安装,详见《Scala & IntelliJ IDEA:环境搭建、helloworld》)
 
配置环境变量:
1)vi /etc/profile
在末尾添加:
export SCALA_HOME=/Users/yp-tc-m-2755/Documents/software/scala-2.12.4
export PATH=$PATH:$SCALA_HOME/bin
保存退出。
 
2)输入命令,使其生效:
source /etc/profile
 
3)检验(如果没生效,则重启终端):
$ scala -version
Scala code runner version 2.12.4 -- Copyright 2002-2017, LAMP/EPFL and Lightbend, Inc.
 
2. 安装Scala插件
依次:IntelliJ IDEA -> Preferences -> Plugins -> Browse repositories...
(或是在IntelliJ IDEA欢迎页面,右下角点击:Configure->Preferences)
 
1)在搜索框输入scala
2)在列表中选择Scala
3)点击右侧框的“Install”按钮(下图是安装完成之后的样子)
 
 
--------------------
创建Java Web项目
--------------------
1. 使用MAVEN框架,创建web项目
我选择的是:maven-archetype-webapp。
不为别的,就是因为会自动创建一个index.jsp,方便试验tomcat是否正常启动……
 
目录结构大概是这个样子的:
 
2. 手动添加java,scala文件夹
1)在main目录下新建java,scala文件夹
点击File->project structure->Modules
右键单击main文件夹,选择“New Folder”,分别创建java和scala文件夹。
 
2)分别选中java和scala,点击上面的按钮“Sources",
这样,就标记了这两个文件夹下的文件都是源码。
否则,想要创建源文件的时候,右键java或scala,在new->file里没有Java Class和Scala Class选项。
 
 3)在Global Liberaries里添加scala-sdk。
(如果是通过IDEA安装的sdk则不需要,已经默认添加了)
 

 
3. 在pom.xml里添加对scalas的依赖
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
 
<groupId>wangjun</groupId>
<artifactId>ScalaInJava</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
 
<name>ScalaInJava Maven Webapp</name>
<url>http://maven.apache.org</url>
 
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
 
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>2.12.4</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-compiler</artifactId>
<version>2.12.4</version>
</dependency>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-reflect</artifactId>
<version>2.12.4</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>com.google.collections</groupId>
<artifactId>google-collections</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<build>
<finalName>ScalaInJava</finalName>
<plugins>
<plugin>
<groupId>org.scala-tools</groupId>
<artifactId>maven-scala-plugin</artifactId>
<version>2.15.2</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
 
注意:如果不添加<plugin>,在编译的时候会出现错误:no prefix 'scala' 或 找不到符号
 
4. 创建源文件:
1)在java目录下创建HelloJava.java,内容如下:
public class HelloJava {
public static void main(String[] args) {
System.out.println("Hello : Java");
HelloScala helloScala = new HelloScala();
helloScala.sayHello( " my first scala!");
}
}
 
2)在scala目录下创建HelloScala.scala,内容如下:
class HelloScala {
def sayHello(x: String): Unit = {
println("hello, " + x)
}
}
 
可以看到,在HelloJava里调用了HelloScala对函数sayHello。
 
5. 运行:
在HelloJava.java编辑框任意位置,右键单击,选择:Run 'HelloJava.main()'
控制台输出结果:
 
 
OK,可以开始Scala之旅了!
 
--------------------
参考
--------------------
1)scala intellij idea 环境搭建及编译、打包
2)IntelliJ IDEA + Maven创建Java Web项目
3)运用Intellij创建自己的第一个Maven工程
4)Maven 三种archetype说明

Scala & IntelliJ IDEA环境搭建升级版:在JAVA中调用Scala的helloworld的更多相关文章

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

    大数据生态圈中风头正旺的Spark项目完全是采用Scala语言开发的,不懂Scala的话,基本上就没法玩下去了.Scala与Java编译后的class均可以运行于JVM之上,就好象.NET中F#与C# ...

  2. Scala进阶之路-为什么要学习Scala以及开发环境搭建

    Scala进阶之路-为什么要学习Scala以及开发环境搭建 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 最近人工智能和大数据那是相当的火呀,人工智能带动了Python的流行,区块 ...

  3. scala 入门Eclipse环境搭建

    scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/downloa ...

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

    scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...

  5. JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构

    一.简介 JAVA中调用LevelDB用于Linux和Window环境下快速存储KV结构 二.依赖 <!-- https://mvnrepository.com/artifact/org.fus ...

  6. java中调用dll文件的两种方法

    一中是用JNA方法,另外是用JNative方法,两种都是转载来的, JNA地址:http://blog.csdn.net/shendl/article/details/3589676   JNativ ...

  7. 如何在Java中调用Python代码

    有时候,我们会碰到这样的问题:与A同学合作写代码,A同学只会写Python,而不会Java, 而你只会写Java并不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方设法“调 ...

  8. 在Java中调用Python

    写在前面 在微服务架构大行其道的今天,对于将程序进行嵌套调用的做法其实并不可取,甚至显得有些愚蠢.当然,之所以要面对这个问题,或许是因为一些历史原因,或者仅仅是为了简单.恰好我在项目中就遇到了这个问题 ...

  9. 在Java中调用Python代码

    极少数时候,我们会碰到类似这样的问题:与A同学合作写代码, A同学只会写Python,不熟悉Java ,而你只会写Java不擅长Python,并且发现难以用Java来重写对方的代码,这时,就不得不想方 ...

随机推荐

  1. pcb过孔盖油

    pcb的过孔应该盖油,,这样,两个距离比较紧的过孔就不会在焊接的时候短路了,尤其是手工焊接小件的时候.

  2. PDO中获取结果集

    fetch()方法 fetch()方法用于获取结果集的下一行.语法例如以下: mixed PDOStatement::fetch([int fetch_style][,int cursor_orien ...

  3. 【Codeforces Round #185 (Div. 2) D】Cats Transport

    [链接] 链接 [题意] 有n座山,m只猫. 每只猫都在其中的一些山上玩. 第i只猫在h[i]山上玩,且会在t[i]时刻出现在山脚下(然后就一直在那里等) 然后有p个人. 它们听从你的安排. 在某个时 ...

  4. js中json法创建对象(json里面的:相当于js里面的=)

    js中json法创建对象(json里面的:相当于js里面的=) 一.总结 json里面的:相当于js里面的= 4.json创建js对象解决命名冲突:多个人为同一个页面写js的话,命名冲突就有可能发生, ...

  5. php xml转数组,数组转xml,array转xml,xml转array

    //数组转XML function arrayToXml($arr) { $xml = "<xml>"; foreach ($arr as $key=>$val) ...

  6. 命令行运行python模块时提示包找不到的问题

    庄稼人不是专职python开发的道友.尽管与python相识已多年,可惜相识不相知,仅仅是偶尔借助pydev写一些简单的小工具. 多年来.一直困惑于这样一个问题:相同的project.相同的代码,使用 ...

  7. [内核编程] 4.5 HOOK分发函数

    4.5 HOOK分发函数 本节开始深入的探讨键盘的过滤与反过滤.有趣的是,无论是过滤还是反过 滤,其原理都是进行过滤.取胜的关键在于:谁将第一个得到信息. 黑客可能会通过修改一个已经存在的驱动对象(比 ...

  8. 【35.43%】【hdu 4347】The Closest M Points

    Time Limit: 16000/8000 MS (Java/Others)    Memory Limit: 98304/98304 K (Java/Others) Total Submissio ...

  9. [Jenkins] Define a pipeline

    node{ stage 'checkout' git '[github_url]' def project_path="[project_path]" // everythin i ...

  10. 关于IT增值服务"拜师学艺"价格调整的通知

    经过几天的探索,在与若干潜在付费客户交流的基础上,决定对IT增值服务"拜师学艺"价格进行调整. 当前价格:年费1000元,月付100元-1年付10个月. 2015年1月1日起,年费 ...