我收到错误:
C:\ dev \ ws \ springapp \ build.xml:81:无法找到javac编译器; com.sun.tools.javac.Main不在类路径上。 也许JAVA_HOME并没有指向JDK。 它目前设置为“C:\ Program Files \ Java \ jre6”
但我已经明确将我的JAVA_HOME设置为C:\ Program Files \ Java \ jdk1.6.0_14
ANT在哪里获得此值?
答案 0 :(得分:76)
C:\Program Files\Java\jdk1.7.0_04
)。这适用于我遇到的特定情况。
答案 1 :(得分:33)
当你说你已经“明确地将”JAVA_HOME设置为“C:\ Program Files \ Java \ jdk1.6.0_14”时 - 你从命令行运行“set”时看到的是什么?我相信如果没有设置,Ant会猜测JAVA_HOME的值...你有可能设置JAVAHOME而不是JAVA_HOME吗?
如果它不是那样的话,我建议你编辑ant.bat
批处理文件(以及它所调用的任何内容 - 我不记得它是否是错综复杂的,或者不是随意的)来打印出JAVA_HOME的开头和其他各种有趣的地方。
答案 2 :(得分:17)
当我尝试使用以下命令运行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,而不是安装了JDK的“/ usr / lib / jvm / java-6-openjdk”
我通过在fork="yes"
任务中设置<javac>
来解决此问题。
答案 3 :(得分:15)
你也可能在你的JAVA_HOME设置中包含/ bin,而Ant正在向它添加/ bin - 从而找不到任何exe。它发生在我身上:}
答案 4 :(得分:8)
确保不使用尾随分号:这不起作用:
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29;
这将:
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29
答案 5 :(得分:7)
我遇到了类似的问题。我会链接从Maven构建运行Ant任务,我得到了问题。我已将其修改为以下步骤:
它对我有用。
答案 6 :(得分:5)
要解决此问题,请在window-&gt; preferences-&gt; ant-&gt;中添加tools.jar文件。运行时。
答案 7 :(得分:4)
在eclipse中,将已安装的JRE设置设置为JDK - 在项目中(项目属性 - > Java Build Path-&gt; Libraries),或者在首选项中设置全局默认值(Java-&gt; Installed JREs)。 eclispe设置比系统变量强。
答案 8 :(得分:3)
我希望您了解系统和用户环境变量。用户优先于系统。如果您已在系统变量中设置了JAVA_HOME,并且在用户变量中存在相同的条目,那么您将只获得后者。
右键单击我的电脑,转到属性,选择高级选项卡,然后单击环境变量以查看用户和系统环境变量列表。
答案 9 :(得分:3)
分号让我失望:我将JAVA_HOME
设置为“C:\ jdk1.6.0_26;”而不是“C:\ jdk1.6.0_26”。在按照Jon Skeet的建议检查ant.bat
文件后,我删除了尾随分号。这是该文件的一部分:
if "%JAVA_HOME%" == "" goto noJavaHome
if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
因此,分号没有被删除,导致无法找到该文件,因此默认为“C:\ Java \ jre6”或类似的东西。
令人困惑的部分是HowtoBuild页面声明使用分号,但这似乎打破了它。
答案 10 :(得分:2)
我遇到了同样的问题,将javac标记中的可执行属性设置为javac.exe的位置为我解决了问题。 这解决了问题
<javac srcdir="${srcDir}" destdir="${buildDir}" fork="true" executable="C:\Program Files\Java\jdk1.7.0_03\bin\javac"/>
答案 11 :(得分:2)
如果您设置了JAVA_HOME
但是其中有拼写错误,您还会看到对jre6路径的虚假引用。
答案 12 :(得分:2)
实际上在superuser.com上找到了这个答案,但我不得不将tools.jar从我的JDK \ lib目录复制到JRE \ lib目录。
让ZERO感觉到......我唯一能想到的是Sun在最新的Java运行时(Java 7 Update 11)中引入了这个bug,或者在Ant如何读取当前JDK位置(JRE更新更新)中引入了一个错误显然,这也是Sun的愚蠢......他们应该在每次更新JRE时释放JDK。
我的JAVA_HOME设置正确。我确认做了“设置JAVA_HOME”。它指向我的JDK目录并拼写正确。但是,Ant声称它找不到javac,但认为JAVA_HOME在我的JRE目录中。
在最新的Sun JRE7更新(10和11)之前,我的系统工作正常。 Ant是版本1.8.4
答案 13 :(得分:2)
当其他一切正确时,请尝试以下
注意:为您想要使用的java编译器添加tools.jar,并在存在多个tools.jar(java编译器)时,通过在tools.jar列表中将其移动来优先使用它。
答案 14 :(得分:1)
只需从以下步骤设置JDK路径:
转到&#39;运行&#39; - &gt;外部工具 - &gt;外部工具配置
- &GT;选择&#39; JRE&#39; 然后从DropDown列表中选择可用的JDK。恩。 jdk1.8.0_25
答案 15 :(得分:0)
如果需要在eclipse中使用内置的eclipse jdk运行ant,请在build.xml中添加以下行
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
答案 16 :(得分:0)
快速解决同样的问题
将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。
答案 17 :(得分:0)
有同样的问题;
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
答案 18 :(得分:0)
仅供参考,我使用的是Windows 7并且必须重新启动Windows才能使新的JAVA_HOME设置生效。
答案 19 :(得分:0)
这个问题很常见。我无法在我的系统中设置任何特定的Java主页,因为我有不同版本的Java(Java 6和Java 7)用于不同的环境。 要解决此问题,我在打开build.xml文件时在运行配置中包含了JDK路径。 这样,2个不同的构建文件使用2个不同的Java版本进行构建。 我认为这个问题可能有更好的解决方案,但至少上述方法避免设置JAVA_HOME变量。
答案 20 :(得分:0)
在使用Jenkins构建项目时遇到了这个问题。首先,它找不到ant.bat
,这是通过将ant.bat的路径添加到系统环境变量路径来修复的。然后ant无法找到jdk目录。通过右键单击my computer > properties > advanced > environment variables
并创建名为JAVA_HOME
的新环境变量并为其指定值C:\Program Files\Java\jdk1.7.0_21
,可以解决此问题。不要在“用户变量”中创建此环境变量。仅在系统变量下创建它
在这两种情况下,我都必须重新启动系统。
答案 21 :(得分:0)
我也遇到了同样的问题。我使用的是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版。
答案 22 :(得分:0)
我遇到了同样的问题。我的JDK包由JAVA_HOME指出没有任何tools.jar 确保您的JDK instal.lation具有tools.jar
(显然消息错误令人困惑)
答案 23 :(得分:0)
将环境变量中的JAVA_HOME设置为D:\Program Files\IBM\SDP\jdk
不要给任何引号或分号。它适用于我。请尝试解决方案。
实际上在ant.bat中,如果ant.bat无法找到它,那么它会检查适当的JAVA_HOME
,然后JAVA_HOME
指向默认的JRE。