无法构建apache spark:“无法运行程序”javac“:error = 20,不是目录”

时间:2015-09-25 13:38:56

标签: java maven build apache-spark sbt

我正在尝试在Linux机器上安装Spark。我从http://spark.apache.org/docs/latest/building-spark.html下载了它,并尝试使用此命令构建它:

root# build/mvn -e -X -Pyarn -Phadoop-2.4 -Dhadoop.version=2.4.0 -Phive -Phive-thriftserver -DskipTests clean package

构建似乎开始很好:

Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T07:57:37-04:00)
Maven home: /some_path_here/spark-1.5.0/build/apache-maven-3.3.3
Java version: 1.7.0_05, vendor: Oracle Corporation
Java home: /usr/local/mytools-tools/java/jdk64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-573.1.1.el6.x86_64", arch: "amd64", family: "unix"
[DEBUG] Created new class realm maven.api
[DEBUG] Importing foreign packages into class realm maven.api

但后来失败了:

[debug] Recompiling all 8 sources: invalidated sources (8) exceeded 50.0% of all sources
[info] Compiling 8 Java sources to /some_path_here/spark-1.5.0/launcher/target/scala-2.10/classes...
[debug] Attempting to call javac directly...
[debug] com.sun.tools.javac.Main not found with appropriate method signature; forking javac instead
[debug] Forking javac: javac @/tmp/sbt_6c9436e4/argfile
[error] Cannot run program "javac": error=20, Not a directory
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary:
[INFO] 
[INFO] Spark Project Parent POM ........................... SUCCESS [  2.056 s]
[INFO] Spark Project Launcher ............................. FAILURE [  4.832 s]

等等。

我很确定我已正确定义JAVA_HOMEPATH

此框安装了多个Java版本,可能与问题有关。

2 个答案:

答案 0 :(得分:0)

我通过关闭Zinc解决了这个问题,根据相关问题回答:https://stackoverflow.com/a/32766960

答案 1 :(得分:0)

Spark构建的“怪癖”是,如果确定需要,它可以下载自己的Maven版本。

当您运行./build/mvn clean package时,不是直接运行Maven,而是运行Spark专有脚本。脚本要做的第一件事是检查您的mvn --version是否足够新,是否适合项目确定所需的版本(已在pom.xml文件中设置)。

这很重要,因为如果您运行的是旧版本的maven,Spark可能会下载其他maven版本并安装并使用它。

一些关键的事情:

当您运行./build/mvn clean package时,请检查它正在使用哪个版本的maven。 当maven运行时,它会自己遍历以找出使用了哪个JAVA_HOME 在尝试运行Spark构建之前,请检查JAVA_HOME是否设置为变量 检查JAVA_HOME版本是完整的jdk,而不只是jre 将您的Maven更新到最新版本(或检查它至少与根目录中pom.xml中设置的版本一样新) 谢谢