Intellij 使用心得

使用intellij创建一个非常简单的scala代码,为啥都会提示找不到主类?

错误: 找不到或无法加载主类 test2

原因: java.lang.ClassNotFoundException: test2

idea error

原因有2种。

  • 第一种,的确是没有编译成功,导致class文件没有产生,当然找不到主类。这类问题,可以通过检查target目录,以及观察build过程中的提示,来确认。例如,我用jdk9+scala 2.12来编译spark程序,结果总是提示上述错误。查了文档才发现,scala只和jdk8能正常配合工作,用 jdk9,会导致编译失败。

  • 第二种,是因为classpath设置不对造成的。需要手动将工作目录设置为target目录,这样才能正确执行。 但是,这明明是低级错误,为什么还会发生?实在很难理解。

如何基于Windows 10创建Intellij + Spark开发环境 ?

  • windows 10自带Ubuntu,所以先安装Ubuntu for windows 10

  • 在Ubuntu中安装spark,版本我选2.2.1,当然也可以选更高的。过程很简单,网上教程很多。需要注意2点。

    • Ubuntu的 open-ssh要重新安装,而且要把免密登录给设置好。后面脚本里都会涉及ssh登录本机的情况。

    • spark要装成standalone模式

  • 在Ubuntu中安装hadoop,版本我选2.9.0。过程也不复杂,但是还是要注意1点。

    • JAVA_HOME要手工在hadoop-daemon.sh和yarn-daemon.sh中设置。如果不设置,就会提示java_home找不到的错误。
  • 上述软件包安装好之后,就可以用Intellij来开发了。也很简单,但是要注意2点。

    • 向集群发布任务的时候,代码一定要写成这样.不这么写,就会报各种错。
        val conf =new SparkConf().setAppName("Spark Pi").setMaster("spark://127.0.1.1:7077")
        .set("spark.driver.host","127.0.1.1")
       .setJars(List("C:\\Users\\mac\\IdeaProjects\\2018\\scalalearn\\out\\artifacts\\scalalearn_jar\\scalalearn.jar"))
    
    • 涉及读写文件的操作,都写到hdfs上吧。写本地文件的操作,好像和standalone模式冲突,无论怎么搞都提示找不到文件。这也是为什么Ubuntu上要安装hadoop的原因。

猜你喜欢

转载自my.oschina.net/pearma/blog/1672724