IOException:当Spark中的“sudo ./sbt/sbt compile”时,无法运行程序“javac”?

时间:2014-03-09 20:05:24

标签: sbt apache-spark

我正在安装Apache Spark,它使用自己的SBT副本进行设置。

我在VirtualBox VM中使用Linux Mint。

当我从Spark目录sudo ./sbt/sbt compile运行spark-0.9.0-incubating时,这是错误的片段:

[error] (core/compile:compile) java.io.IOException: Cannot run program "javac": error=2, No such file or directory

[error] Total time: 181 s, completed Mar 9, 2014 12:48:03 PM

我可以从命令行运行javajavac就好了:例如javac -version提供javac 1.6.0_31

jdk1.6.0_31/bin中有正确的PATH

我读到错误可能是由于我安装的64位JDK,但是我得到了与32位JDK相同的错误。

如何解决问题?

编辑:使用bash shell。

2 个答案:

答案 0 :(得分:3)

免责声明我现在大部分都在猜测,但仍然不确定我应该在这里做出回应而不是添加评论。在明确之前,免责声明仍然存在。

当您从命令行执行javajavac时,您当时的用户是什么?我很确定您的问题浮出水面,因为您运营的用户 不同。

请注意,您正在sudo ./sbt/sbt compile执行root(由于sudo的工作方式),但您没有说明您曾经使用过哪些用户执行javacjava命令。

jdk1.6.0_31/bin添加PATHroot,您将全部设置(就Java相关配置而言)。

我还建议将JAVA_HOME设置为指向jdk1.6.0_31,因为它可能会有所帮助 - 许多应用程序正在使用它作为查找Java位置的方法。

作为一种变通方法,您可以修改./sbt/sbt并相应地添加PATHJAVA_HOME

答案 1 :(得分:2)

您需要包含javac可执行文件。要在Ubuntu中执行此操作,请运行以下命令:

sudo apt-get install openjdk-7-jdk

它也会将其放在您的path变量中。