2012-05-30 83 views
11

我试图mvn install和得到这个消息:无法找到javac编译

Compilation failure 
Unable to locate the Javac Compiler in: 
    /usr/lib/jvm/java-7-openjdk-amd64/jre/../lib/tools.jar 
Please ensure you are using JDK 1.4 or above and 
not a JRE (the com.sun.tools.javac.Main class is required). 
In most cases you can change the location of your Java 
installation by setting the JAVA_HOME environment variable. 

那么,有一个开放的JDK,我还下载了一个又一个。我想指出JAVA_HOME到两个,现在它被设置:

JAVA_HOME=/usr/lib/jvm/jdk1.7.0_03 
export JAVA_HOME 
PATH=$PATH:$JAVA_HOME/bin 
export PATH 

我也试着选择那些sudo update-alternatives --config java开之一,但与它不同的JDK版本得到了同样的错误。

我该如何解决这个问题?提前致谢。

+0

“javac -version”和“which javac”的输出是什么? – Korgen

+1

@Korgen在“javac -version”之后,我得到了“程序'javac'可以在下面的包中找到”,并且建议安装其中的一个(当然,那里已经安装了一个开放的jdk)。 –

+1

您是否从此登录过? – dbalakirev

回答

18

它似乎像你的路径没有正确拾取......“echo $ PATH”的输出包含javac驻留的目录吗? 我建议如下:

开放的终端,做一个:

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_03 
export PATH=$PATH:$JAVA_HOME/bin 
javac -version 
which javac 

除非javac -version仍然无法正常工作创建在/ usr/local/bin目录符号链接指向你的javac二进制:

cd /usr/local/bin 
ln -s /usr/lib/jvm/jdk1.7.0_03/bin/javac javac 

这应该让您的运行... 的另一种方法是尝试通过你的软件包管理系统设置Java(例如:“apt-get的安装java”或某事类似)

+0

谢谢,现在我得到的javac版本,但我仍然得到编译失败 –

+1

你是否执行maven从相同终端,你在哪里输入上述行? mvn错误消息是否仍然指向openjdk目录或/usr/lib/jvm/jdk1.7.0_03? – Korgen

+0

查看问题的评论,问题似乎已解决,但无论如何,我会尽快标记此答案。 –

0

我在运行Jenkins的maven构建时在ubuntu机器上遇到过类似的错误。如果 '的javac -version' 的输出提示下面的消息:

“方案 '的javac' 可以在下面的包中找到: 默认-JDK ECJ GCJ -5- JDK 的openjdk -8- JDK-无头 GCJ-4.8-jdk的 的gcj-4.9-jdk的 的OpenJDK-9-JDK-无头 尝试:易于安装“

然后你就可以安装 ”的OpenJDK-8-JDK-无头“ 使用:

容易安装openjdk-8-jdk-headless

这解决了我的问题,maven构建通过了。