scalac编译产生“对象apache不是包org的成员”

时间:2015-02-02 01:08:52

标签: scala apache-spark

我的代码是:

import org.apache.spark.SparkContext

它可以在交互模式下运行,但是当我使用scalac进行编译时,我收到以下错误消息:

  

object apache不是包org的成员

这似乎是路径的问题,但我不确切知道如何配置路径。

6 个答案:

答案 0 :(得分:18)

您需要指定编译Scala代码时使用的库的路径。这通常不是手动完成的,而是使用Maven或sbt等构建工具。您可以在http://spark.apache.org/docs/1.2.0/quick-start.html#self-contained-applications

找到最小的sbt设置

答案 1 :(得分:4)

我遇到了这个问题,因为我的火花依赖性范围错误。这是错误

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-core_2.11</artifactId>
  <version>${spark.version}</version>
  <scope>test</scope> <!-- will not be available during compile phase -->
</dependency>

会起作用,并且不会在你的uberjar中加入火花,这是你几乎肯定想要的:

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-core_2.11</artifactId>
  <version>${spark.version}</version>
  <scope>provided</scope>
</dependency>

答案 2 :(得分:1)

一种简单的方法(如果使用的是Play框架)是在Maven Repository中查找LibraryDependacy,选择版本choose SBT,然后将其添加到底部project/build.sbt文件中的文件,如下所示:

// https://mvnrepository.com/artifact/org.apache.spark/spark-core
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.3.2"

然后,您需要在sbt控制台中输入reload,然后输入compile。如果您来自pipjs,但Maven Repo是您的朋友,这可能会有点陌生。

答案 3 :(得分:0)

我遇到了同样的问题,请确保您位于根目录中。

答案 4 :(得分:0)

我在sbt interactive会话中遇到了这个问题。

通过在会话中简单执行reload解决了问题。

希望这会有所帮助!

答案 5 :(得分:0)

在spark框架上运行scala wordcount程序时,我遇到了同样的问题。 我使用eclipse作为IDE,使用maven作为构建工具。 我只是从“测试”->“提供”中删除了POM文件中spark框架的工作范围,如下所示。有效。 提供