---------------------
前言
---------------------
项目关系,希望用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. 【例题3-3 UVA - 401】Palindromes

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果一个字符没有对应的镜像,那么它对应的是一个空格. 然后注意 aba这种情况. 这种情况下b也要查一下它的镜像是不是和b一样. [ ...

  2. mysql 悲观锁 的运用

    悲观锁: 它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态.悲观锁的实现,往往依靠数据库提供的锁机制(也只有数 ...

  3. $.getJSON 跨域

    //支持跨域 $.getJSON(url + '&callback=?', function(res) { if (res.status === 0) { console.log(res.re ...

  4. Nginx的一些介绍

    Apacheserver:http://httpd.apache.org,世界上用的最多的server,开放源码.支持跨平台,可移植性,模块支持丰富,虽速度和性能及内存消耗不及其它轻量级Webserv ...

  5. php资源集

    php资源集 一.php资源网站 1.php中文网(js特效,模板,软件工具下载,课程) www.php.cn js特效下载_js特效代码_js特效大全-php中文网免费下载站http://www.p ...

  6. Deepin下python安装uwsgi报错: Python.h:没有那个文件或目录

    解决方法是安装python-dev,这是Python的头文件和静态库包 正在读取软件包列表... 完成正在分析软件包的依赖关系树       正在读取状态信息... 完成       下列软件包是自动 ...

  7. tipc

    TIPC SOCKET实现分析 http://ju.outofmemory.cn/entry/158241

  8. PEM_密钥对生成与读取方法

    PS:欢迎转载,但请注明出处,谢谢配合. 前言: PEM是OpenSSL和许多其他SSL工具的标准格式,OpenSSL 使用PEM 文件格式存储证书和密钥.这种格式被设计用来安全的包含在ascii甚至 ...

  9. Kolya and Tandem Repeat

     Kolya and Tandem Repeat time limit per test 2 seconds memory limit per test 256 megabytes input s ...

  10. C++ 工具类 —— 词条类(Entry)

    Entry 以键值对(key-value pair)的形式定义. template <typename K, typename V> struct Entry{ K key; V valu ...