无法找到Javac编译器

18

我尝试运行mvn install,但是收到了这个消息:

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指向这两个JDK,现在已经设置好了:

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版本中都得到了相同的错误。

我该如何修复这个问题?谢谢提前。


"javac -version" 和 "which javac" 的输出是什么? - Korgen
1
@Korgen 在执行 "javac -version" 命令后,我收到了 "The program 'javac' can be found in the following packages" 的提示,建议安装其中一个包(实际上已经安装了一个 open jdk)。 - John Doe
1
你最近是否已经登录并退出了? - dbalakirev
@dave00 自从安装以来,你登录过Ubuntu了吗?没有。 - John Doe
1
@dave00 哇,谢谢!我重新登录后似乎运行正常了,如果有问题我会再写的。 - John Doe
2个回答

19

看起来您的PATH没有正确识别... "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 install java”或类似的命令)


谢谢,现在我得到了javac版本,但我仍然遇到编译失败。 - John Doe
1
你是在输入上面那些命令的终端中执行Maven吗?mvn错误消息仍然是指向openjdk目录还是/usr/lib/jvm/jdk1.7.0_03目录? - Korgen
看到问题的评论,问题似乎已经解决了,但还是谢谢。一旦答案好了,我会标记它的。 - John Doe

6

我在一个ubuntu机器上使用Jenkins运行Maven构建时遇到了类似的错误。如果'javac -version'的输出提示如下信息:

"程序'javac'可以在以下包中找到: default-jdk ecj gcj-5-jdk openjdk-8-jdk-headless gcj-4.8-jdk gcj-4.9-jdk openjdk-9-jdk-headless 尝试: apt install "

那么你可以使用以下命令安装"openjdk-8-jdk-headless":

apt install openjdk-8-jdk-headless

这解决了我的问题,Maven构建成功通过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接