【问题标题】:Failing to build apache spark: " Cannot run program "javac": error=20, Not a directory"无法构建 apache spark:“无法运行程序“javac”:错误 = 20,不是目录”
【发布时间】:2015-12-23 08:45:50
【问题描述】:

我正在尝试在 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版本,可能与问题有关。

【问题讨论】:

    标签: java maven build apache-spark sbt


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      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 中设置的版本一样新)

      【讨论】:

        猜你喜欢
        • 2017-10-06
        • 2014-04-12
        • 2015-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多