Ant构建 - JAVA_HOME变量未更新

时间:2016-04-27 13:57:38

标签: java ant

我正在尝试运行ant build来生成jar,我收到以下错误:

Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64/lib/tools.jar
Buildfile: /my/path/to/the/required.xml

make:
[javac] /my/path/to/the/required..xml:11: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds

BUILD FAILED
/my/path/to/the/required.xml:11: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib/jvm/java-1.8.0-openjdk-   1.8.0.91-0.b14.el7_2.x86_64/jre"

我的问题:  1.我在网上做了一些阅读并得出结论,因为我指的是JRE而不是JDK,这就是它失败的原因。最初我做了

export JAVA_HOME=readlink -f $(which java)

所以我用which javac命令的输出更新并导出了我的JAVA_HOME变量。有趣的是,错误的最后一部分没有显示更改的JAVA_HOME值。那是为什么?

  1. 这是什么includeantruntime以及如何摆脱它?我用ant 1.9.2

2 个答案:

答案 0 :(得分:1)

您可能需要检查并更新JAVA_HOME设置的ant配置文件。可以在文件/etc/ant.conf, $ HOME / .ant / ant.conf和$ HOME / .antrc中覆盖.bashrc中为shell设置的$ JAVA_HOME的值。如果执行bash -x,它将打印调试信息,这些信息可以帮助您找到$ JAVA_HOME被覆盖的位置。

答案 1 :(得分:0)

也许只是Ant首先查找java可执行文件的位置(即在JAVA_HOME变量或其他地方)。

您可以通过设置fork="true"executable参数来测试是否是这种情况,如下所述: https://ant.apache.org/manual/Tasks/javac.html 看看是否是这种情况。

另外,你真的在​​JVM中找到了你当前指向你的JAVA_HOME的tools.jar吗?