zoukankan      html  css  js  c++  java
  • 如何在IntelliJ IDEA中运行Java/Scala/Spark程序

    本文将分两部分来介绍如何在IntelliJ IDEA中运行Java/Scala/Spark程序:

    • 基本概念介绍
    • 在IntelliJ IDEA中创建和运行java/scala/spark程序

    基本概念介绍

    IntelliJ IDEA

    本文使用版本为: ideaIC-2020.1

    IDEA 全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,它的旗舰版本还支持HTML,CSS,PHP,MySQL,Python等,免费版只支持Java,Scala等少数语言。如果只开发Java和Scala,去官网下载社区版即可:https://www.jetbrains.com/idea/.

    Java

    本文使用版本为:java 8

    编程语言,不解释。在IDE之外运行Java程序的方式如下:

    javac HelloWord.java // 先编译源码 ---->java HelloWord.class
    java.exe  HelloWord // 直接运行
    

    实际开发中每个java程序都会依赖其他的包,也就是jar,这种情况你必须告诉java.exe 你的jar包都在哪里,告诉java的方式就是通过classpath指定,通常我们都会在系统环境变量中建立一个CLASSPATH的环境变量,这样java会在这里寻找你程序依赖的包。当然也可以在运行时指定,这样的话程序执行的方式就是下面的样子:

    java.exe  -classpath "D:Program Filesjava-se-8u41-rijrelibcharsets.jar;..."  HelloWord
    //  -classpath: Java程序以来包或包的路径,Windows下用 ; 分开。
    

    可以自己下载安装Javaj的JDK,也可以直接从IDEA上下载和管理,建议使用后者。

    File -> Project Structure -> Platform Setting -> SDKs -> + -> Download JDK
    

    可以下载多个版本,对不同的程序使用不同的配置,很方便。

    Scala

    本文使用版本为:Scala 2.11.12

    Scala是一门多范式的编程语言,一种类似java的编程语言 ,设计初衷是实现可伸缩的语言 、并集成面向对象编程函数式编程的各种特性。它一方面吸收继承了多种语言中的优秀特性,一方面又没有抛弃Java这个强大的平台,它运行在Java虚拟机(JavaVirtualMachine)之上,轻松实现和丰富的Java类库互联互通

    基于Java的编程语言,支持多种运行方式:

    1. 像python一样,交互式运行
    // scala
    scala> println("HelloWorld")
    HelloWorld
    // python
    python> print("HelloWorld")
    HelloWorld
    
    1. 像python一样命令运行
    // scala 
    scala script.scala 
    // python
    python script.py
    
    1. 用scalac或fsc编译为.class 或 jar 再用java命令运行,每次scalac编译都需要启动一个JVM

    Scala可以自行安装下载,也可以利用IDEA中的插件自行下载,推荐后者,下载方式为:

    File -> Project Structure -> Platform Setting -> Global Libraries -> + -> Download...
    

    同时,也需要下载scala的插件:

    File -> Settings... -> Plugins -> Marketplace ... -> [ Search Scala ]
    

    所以,Scala像是一门新的编程语言,又和Java有着密不可分的联系。

    Maven

    管理依赖,和构建Java项目的工具,不多介绍,可以自行下载也可以直接使用IDEA中自带的版本,插件下载方式:

    File -> Settings... -> Plugins -> Marketplace ... -> [ Search Maven ]
    

    Spark

    本文使用版本为:spark 2.4.5

    Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。SparkSpark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架。Spark既不是SDK也不是Global Libriaries,在IDEA中可以像使用普通的包一样使用spark。如果想使用spark-shell,可以自行下载。


    综上可知:Spark用Scala实现,Scala又构建于JVM之上,和Java之间可以密切互通。所以要想开发Spark程序,必须对三者及其关系有一定的了解。

    在IntelliJ IDEA中创建和运行java/scala/spark程序

    创建并运行Java程序

    1. 新建项目
      选择 Create Project 创建Java/Scala程序,这一步关键是要选择你的JDK。如果你下载或安装了多个版本的JDK且被IDEA识别,那么你可以用下拉列表选择合适的JDK的版本

    Java

    JDK

    1. 新建Package

    在 src目录上右键,选择新建Package,也就是你的代码所在的包名,这一步可以跳过。

    新建Package

    1. 新建Class

    在包所在的目录上右键,新建Java/Scala Class

    1. 设置源码目录

    这一步也很重要,需要把src目录设置成源码目录,因为IDEA只会在源码目录下找你的程序。

    Sources Root

    1. 编写代码

    为了完整演示如何运行程序,代码中加入了对第三方库的引用。

    package com.example;
    
    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    public class HelloWord {
        static final Logger logger = LogManager.getLogger(HelloWord.class.getName());
    
        public static void main(String[] args) {
            logger.entry();
            logger.error("Inside Hello Logger!");
            logger.exit(false);
        }
    }
    

    那么问题来了,如何告诉java你的第三方包在哪里呢?如果创建的是Maven项目,可以在Maven项目中添加依赖,具体配置网上都有教程,可以直接参考,然后别忘了让maven同步一下,把以来加载到本地:

    Maven

    如果你创建的不是Maven项目,那么你需要自己管理你自己的依赖。我们通过如下方式将你引用的jar包手动添加进来:

    File -> Project Structure -> Project Setting -> Libraries -> + -> Java..
    

    添加完之后你的配置会长这个样子:

    Libraries

    然后我们就可以通过Run命令运行这个HelloWord 程序了,运行的时候直接选择默认配置:

    config

    IDEA命令行中实际执行的命令如下,可以看出也是用了 -classpath参数来指定依赖的。

    D:Program Filesjava-se-8u41-riinjava.exe
     -Djava.library.path=C:Usershaipw.m2
    epository 
    "-javaagent:D:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.1libidea_rt.jar=59878:D:Program FilesJetBrainsIntelliJ IDEA Community Edition 2020.1in"
     -Dfile.encoding=UTF-8 -classpath 
    "
    D:Program Filesjava-se-8u41-rijrelibcharsets.jar;
    D:Program Filesjava-se-8u41-rijrelibextcldrdata.jar;
    D:Program Filesjava-se-8u41-rijrelibextdnsns.jar;
    D:Program Filesjava-se-8u41-rijrelibextlocaledata.jar;
    D:Program Filesjava-se-8u41-rijrelibext
    ashorn.jar;
    D:Program Filesjava-se-8u41-rijrelibextsunec.jar;
    D:Program Filesjava-se-8u41-rijrelibextsunjce_provider.jar;
    D:Program Filesjava-se-8u41-rijrelibextsunmscapi.jar;
    D:Program Filesjava-se-8u41-rijrelibextsunpkcs11.jar;
    D:Program Filesjava-se-8u41-rijrelibextzipfs.jar;
    D:Program Filesjava-se-8u41-rijrelibjce.jar;
    D:Program Filesjava-se-8u41-rijrelibjsse.jar;
    D:Program Filesjava-se-8u41-rijrelibmanagement-agent.jar;
    D:Program Filesjava-se-8u41-rijrelib
    esources.jar;
    D:Program Filesjava-se-8u41-rijrelib
    t.jar;
    D:UsersJavaTestJavaoutproductionTestJava;
    D:OneDriveapache-log4j-2.13.2-binlog4j-api-2.13.2.jar;
    D:OneDriveapache-log4j-2.13.2-binlog4j-core-2.13.2.jar;
    D:OneDriveapache-log4j-2.13.2-binlog4j-core-2.13.2-tests.jar
    "
    com.example.HelloWord
    

    当然,手动添加Libraries的方式并不推荐,此处演示也是为了说明其中的原理 。实际中遇到一些手动设置依赖加载不成功等bug,十分烦人,所以首选的方式依然是用maven管理,但是道理是一样的。Maven管理的包会自动帮你生成相关配置,像下图一样:

    maven

    创建并运行Scala/Spark程序

    知道如何创建和运行java,再运行scala就很简单了。区别只是你创建项目的时候要选择Scala,然后新建一个 example.scala的源码即可。在此略过。


    总结

    在IDEA中运行Java/Scala/Spark程序,推荐使用Maven进行依赖的管理,同时要注意如下事项:

    • 保证你Project Structure 中的SDK 和 Global Libiaries 的版本正确。
    • 在更新maven配置之后一定要重新加载一下,及时更新配置
    • 运行程序必须要先配置,一般系统会自动生产一个配置,有时候需要自己添加或修改一些参数,请在 Edit Configuration 选项下打开并修改:

    Edit Configuration


    如果你觉得文章有帮助,可以在任何平台搜索”黑客悟理“ 并关注我。感谢支持!

    如果你喜欢以上内容,欢迎到我的个人主页关注我:Homepage

  • 相关阅读:
    [LeetCode] Max Increase to Keep City Skyline 保持城市天际线的最大增高
    [LeetCode] Bricks Falling When Hit 碰撞时砖头掉落
    [LeetCode] Number of Lines To Write String 写字符串需要的行数
    [LeetCode] Unique Morse Code Words 独特的摩斯码单词
    [LeetCode] Find Eventual Safe States 找到最终的安全状态
    [LeetCode] Minimum Swaps To Make Sequences Increasing 使得序列递增的最小交换
    [LeetCode] Similar RGB Color 相似的红绿蓝颜色
    [LeetCode] Champagne Tower 香槟塔
    [LeetCode] Smallest Rotation with Highest Score 得到最高分的最小旋转
    [LeetCode] All Paths From Source to Target 从起点到目标点到所有路径
  • 原文地址:https://www.cnblogs.com/hackerphysics/p/12793968.html
Copyright © 2011-2022 走看看