F3在Eclipse中不适用于Scala-Java混合JAR

时间:2018-07-13 15:07:33

标签: java eclipse scala

在Eclipse中使用Scala代码时,我无法使用F3和其他Eclipse控件。

要重现此问题:

  1. 使用Spark作业原型创建一个新的Maven项目(来自此处:https://github.com/jjmeyer0/spark-java-archetype

  2. 将项目导入Eclipse(作为现有的Maven项目),并添加以下依赖项:

    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.11</artifactId>
        <version>2.2.0</version>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-mllib_2.11</artifactId>
        <version>2.2.0</version>
        <scope>runtime</scope>
    </dependency>
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-library</artifactId>
        <version>2.11.11</version>
    </dependency>
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-reflect</artifactId>
        <version>2.11.11</version>
    </dependency>
    <dependency>
        <groupId>org.scala-lang</groupId>
        <artifactId>scala-compiler</artifactId>
        <version>2.11.11</version>
    </dependency>
    

现在,从App.java中生成的代码开始,如果我尝试在sc.parallelize上执行F3,则会打开JavaSparkContext.class文件,但不会在函数parallelize上打开。另外,F3似乎不适用于该班级。

我尝试查看Spark Github上的代码,我意识到F3似乎可以很好地在.class https://github.com/apache/spark/tree/master/core/src/main/java/org/apache/spark/api/java中而不是{{1 }} https://github.com/apache/spark/tree/master/core/src/main/scala/org/apache/spark/api/java

所以,我的问题是,如何设置Eclipse以将F3与Spark JAR一起正确使用?

1 个答案:

答案 0 :(得分:0)

经过反复试验,以下内容在Eclipse Photon上对我有用。

  1. 我通过在项目上单击鼠标右键,导航到“配置”,然后选择“将Scala性质添加到项目”,将Scala性质添加到父项目。
  2. 此后,我从程序包资源管理器中选择了“ Maven依赖项”,右键单击“构建路径”->“配置构建路径”,然后编辑了“访问规则”。
  3. 我添加了一个访问规则,以使所有文件(“ *”)为“可访问”。

使用光子,上述工作即可。但是,某些功能(例如函数/方法调用上的F3)仍然不起作用,但是至少F3在Scala Spark源代码中有效。

希望这对其他人也有帮助。