为什么ANT告诉我,JAVA_HOME是错误的,当它是不是?(Why does ANT tell m

2019-07-22 21:47发布

我得到的错误:

C:\ dev的\ WS \ springapp \ build.xml中:81:无法找到一个javac编译器; com.sun.tools.javac.Main是不是在classpath。 也许JAVA_HOME不指向JDK。 这是当前设置为 “C:\ Program Files文件\的Java \ JRE6”

但我清楚我的设置JAVA_HOME为C:\ Program Files文件\的Java \ jdk1.6.0_14

凡ANT得到这个值?

Answer 1:

当你说你有“明确规定” JAVA_HOME为“C:\ Program Files文件\的Java \ jdk1.6.0_14” - 就是你所看到的,当您运行命令行“套”? 我相信蚂蚁将用于JAVA_HOME值想,如果没有设置一个在所有...是有可能,你已经设置JAVAHOME代替JAVA_HOME?

如果它是不一样的是,我建议你编辑ant.bat批处理文件(以及任何调用-我不记得它是否是费解或不随便)在开始和其他各种有趣的地方打印出来JAVA_HOME。



Answer 2:

  1. 在Eclipse中单击运行外部工具外部工具配置
  2. 单击JRE选项卡。
  3. 点击所安装的JRE ...按钮。
  4. 点击添加按钮。
    (选择标准VM,如适用)。
  5. 单击目录按钮。
  6. 浏览到您的JDK版本(不是JRE)已安装的Java
    (如C:\Program Files\Java\jdk1.7.0_04 )。
  7. 单击完成确定
  8. 选择JDK在不同的JRE,然后单击关闭
  9. 重新运行Ant脚本 - 有乐趣!

这个工作在我遇到了一个特定的场景。



Answer 3:

我遇到同样的问题,当我尝试使用下面的命令来运行Ant构建:

java -cp ant.jar:ant-launcher.jar org.apache.tools.ant.Main

该命令的输出是:

BUILD FAILED
XXX/build.xml:8: 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-6-openjdk/jre"

看来Java可执行文件是采摘 “/ usr / lib中/ JVM / JAVA-6的OpenJDK / JRE” 为JAVA_HOME,而不是 “/ usr / lib中/ JVM / JAVA-6-OpenJDK的” JDK的安装。

我通过设置解决了这个问题fork="yes"在我的<javac>任务。

看看: http://ant.apache.org/manual/Tasks/javac.html



Answer 4:

也有可能你已经包含在您设置JAVA_HOME / bin中,和Ant是添加/ bin添加到它 - 而没有找到任何exe文件的。 它发生在我身上:}



Answer 5:

请确保您使用尾随分号:这是行不通的:

set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29;

这将:

set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29


Answer 6:

我遇到了similiar问题。 我会链接到运行Ant任务弗朗Maven构建,我得到了这个问题。 我有固定它作为波纹管的步骤:

  • 确保JAVA_HOME设置正确。 您可以检查它在WINDOWNS命令行:C:>回声%JAVA_HOME%的结果会是这样的:C:\ PROGRA〜1 \的Java \ jdk1.6.0_30 \
  • 从%JAVA_HOME%\ lib中复制文件的tools.jar到Maven的lib目录。

它为我工作。



Answer 7:

为了解决这个问题的tools.jar添加文件窗口 - >首选项 - > ant->运行。



Answer 8:

在Eclipse中设置安装JRE设置为JDK - 在项目(项目属性 - > Java构建路径 - >库),或偏好全局默认设置(基于Java>已安装的JRE)。 所述Eclispe的设置是比系统变量更强。



Answer 9:

我希望你知道有关系统和用户环境变量。 用户的人是优选的过系统。 如果您在系统变量设置你的JAVA_HOME,如果有在用户变量相同的条目,那么你将只能得到后者。

右键单击我的电脑,选择属性,选择高级选项卡,然后单击环境变量,以用户和系统环境变量的列表。



Answer 10:

分号被扔我了:我有JAVA_HOME设置为“C:\ jdk1.6.0_26;” 而不是 “C:\ jdk1.6.0_26”。 我下面乔恩斯基特的建议检查后取出尾随分号ant.bat文件。 这是文件的一部分:

if "%JAVA_HOME%" == "" goto noJavaHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome

因此,分号没有被修剪掉末,造成这种无法找到该文件,因此默认为“C:\ Java的\ JRE6”或类似的东西。

混乱的部分是HowtoBuild页面国家使用分号,但似乎打破它。



Answer 11:

我面临着同样的问题,使得在标签的javac可执行文件属性设置为的javac.exe的位置,解决了这个问题对我来说。 这解决了这个问题

<javac srcdir="${srcDir}" destdir="${buildDir}" fork="true" executable="C:\Program Files\Java\jdk1.7.0_03\bin\javac"/>


Answer 12:

其实发现superuser.com这个答案,但我不得不从的tools.jar我JDK \ lib目录下的JRE \ lib目录复制。

使ZERO感......我能想到太阳是唯一推出最新Java运行时或这个bug(Java 7的更新11)的蚂蚁在它是如何读取当前的JDK位置的错误(JRE将超过JDK更新显然这也是愚蠢的阳光......他们应该释放的JDK他们每次更新JRE)。

我JAVA_HOME设置正确。 我证实了做“设置JAVA_HOME”。 它指出我的JDK目录和拼写正确。 然而,蚂蚁是声称它找不到javac的,但认为JAVA_HOME在我JRE的目录。

我的系统最新的Sun JRE7更新(10和11)之前,工作得很好。 Ant是1.8.4版本



Answer 13:

如果你有JAVA_HOME集,但有中有一个错字,你也会看到假参照JRE6路径。



Answer 14:

当一切是正确的请尝试以下

  1. 转到窗口 - >首选项 - >蚂蚁 - >运行 - >类路径
  2. 展开全局条目和检查可用JDK工具在这里。
  3. 从Java的特定版本添加所需的tools.jar,如 “C:\ Program Files文件\的Java \ jdk1.6.0_45 \ LIB \ tools.jar中”
  4. 现在,建立和检查结果。

注意:添加的tools.jar为您想使用最多的tools.jar中的列表中移动它时多的tools.jar(Java编译)存在优先给它的Java编译器。



Answer 15:

只需设置从下面的步骤JDK的路径:

  1. 转到“运行” - >外部工具 - >外部工具配置

  2. - >选择“JRE”然后从下拉列表中选择可用的JDK。 恩。 jdk1.8.0_25



Answer 16:

我有同样的问题。 通过JAVA_HOME指出我的JDK包没有任何的tools.jar要确保你的JDK instal.lation具有的tools.jar

(显然是错误消息是混乱的)



Answer 17:

在环境变量设置JAVA_HOME D:\Program Files\IBM\SDP\jdk不要给任何引号或分号。 它是me.Please作品尝试的解决方案。 其实在ant.bat它会检查适当JAVA_HOME的情况下,如果不ant.bat能找到它,然后它的JAVA_HOME点的默认JRE。



Answer 18:

我也面临同样的问题。 我使用的是Windows 7和我已经安装的Java的两个版本。 首先,我已经安装了最新版本的Java 7,然后第5版。

我的Java安装目录的内容:

C:\Program Files\Java>
jdk1.5.0_14
jdk1.7.0_17
jre1.5.0_14
jre7

我的JAVA_HOME设置为正确的值,这是:

C:\>set ja
JAVA_HOME=C:\Program Files\Java\jdk1.5.0_14

不过还是我得到了同样的问题:

XXXXXXX\build.xml:478: The following error occurred while
executing this line:
XXXXXXX\build.xml:477: 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 "C:\Program Files\Java\jre7"

在此线程尝试了所有的建议后,我意识到我的错误。 我试图设置环境变量在“系统变量”部分,而不是“用户变量”。 在“系统变量”设置它后,它工作得很好。 我虽然面临的另一个问题。

Java的默认版本,它指向的还是7。

C:\>java -version
java version "1.7.0_17"
Java(TM) SE Runtime Environment (build 1.7.0_17-b02)
Java HotSpot(TM) Client VM (build 23.7-b01, mixed mode, sharing)

我不知道如何使它指向5版本。



Answer 19:

建立我与詹金斯项目时,我遇到了这个问题。 首先,它找不到ant.bat ,这是固定通过添加路径ant.bat系统环境变量路径。 然后蚂蚁找不到JDK目录。 这是固定通过右键单击my computer > properties > advanced > environment variables ,并创建一个新的名为环境变量JAVA_HOME和分配给它的值C:\Program Files\Java\jdk1.7.0_21 。 不要创建在用户变量此环境变量。 仅在系统变量创建它。
在这两种情况下,我不得不重新启动系统。



Answer 20:

这是常见的得到这个问题。 我不能设置任何特定的Java家在我的系统,因为我有不同的环境2个不同版本的Java(Java 6中和Java 7)的。 要解决这个问题,我打开build.xml文件时,包含在运行配置JDK的路径。 这样一来,2个不同的构建文件使用2个不同的Java版本的构建。 我觉得可能是一个更好的解决这个问题,但至少上述办法避免设置JAVA_HOME变量。



Answer 21:

仅供参考,我使用的是Windows 7,不得不以重新启动Windows新JAVA_HOME设置生效。



Answer 22:

有同样的问题;

c:\jb\src\build.xml:191: 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 "C:\Program Files\Java\jre7"

Total time: 0 seconds

c:\jb\src>echo %JAVA_HOME%
c:\Program Files\Java\jdk1.7.0_13

解:

path = c:\ant\bin\;%PATH%
path = c:\Program Files\Java\jdk1.7.0_17\bin;%PATH%
set "JAVA_HOME=c:\Program Files\Java\jdk1.7.0_13"

我猜的jdk路径指令仅此一项就做,但我懒弄明白上述方案是防弹。 :-)

还使用Windows7的



Answer 23:

快速的工作,对同一是

复制C:\ Program Files文件\的Java \ jdk1.6.0_14 \ LIB \ tools.jar中为C:\ Program Files文件\的Java \ JRE6 \ LIB \

此异常来,因为JAVA_HOME被设置为C:\ Program Files文件\的Java \ JRE6和Ant是无法找到的tools.jar它。



Answer 24:

如果需要在日食与月食内置JDK运行ant添加build.xml中的以下行

<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>


文章来源: Why does ANT tell me that JAVA_HOME is wrong when it is not?