我正在安装Apache Spark,它使用自己的SBT副本来设置。
我在VirtualBox虚拟机中使用Linux Mint。
下面是我从Spark目录spark-0.9.0-incubating
中运行sudo ./sbt/sbt compile
时的错误片段:
[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
我可以从命令行运行java
和javac
:例如javac -version
给出javac 1.6.0_31
正确的jdk1.6.0_31/bin
在我的PATH
中。
我读到这个错误可能是由于我安装的64位JDK造成的,但是我在32位JDK上得到了相同的错误。
我该如何解决这个问题?
免责声明我现在主要是猜测,仍然不确定我应该在这里回复而不是添加评论。在澄清之前,免责声明仍然有效。
当您从命令行执行java
和javac
时,您是什么用户?我很确定你的问题出现是因为你操作的用户是不同的。
请注意,您将sudo ./sbt/sbt compile
作为root
执行(由于sudo
的工作方式),但您没有说明您一直使用哪些用户来执行javac
和java
命令。
为root
添加jdk1.6.0_31/bin
到PATH
,您将所有设置(就Java的配置而言)。
我还建议将JAVA_HOME
设置为指向jdk1.6.0_31
,因为它有时可能会有所帮助——许多应用程序正在使用它作为查找Java位置的方式。
作为一种解决方法,您可以编辑./sbt/sbt
并适当地添加PATH
和JAVA_HOME
。
您需要包含javac
可执行文件。在Ubuntu中,请运行以下命令:
sudo apt-get install openjdk-7-jdk
它也把它放在你的path
变量中