我得到错误:
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 从哪里得到这个值?
C:\Program Files\Java\jdk1.7.0_04
)。这适用于我遇到的特定场景。
当您说您已将 JAVA_HOME “明确设置”为“C:\Program Files\Java\jdk1.6.0_14”时 - 这是您从命令行运行“set”时看到的内容吗?我相信如果根本没有设置,Ant 会猜测 JAVA_HOME 的值...是否有可能您设置了 JAVAHOME 而不是 JAVA_HOME?
如果不是这样,我建议您编辑ant.bat
批处理文件(以及它所调用的任何内容-我不记得它是否令人费解)以在开始时和其他各种有趣的地方打印出 JAVA_HOME。
当我尝试使用以下命令运行 Ant build 时遇到了同样的问题:
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>
任务解决了这个问题。
您也可能在 JAVA_HOME 设置中包含 /bin,而 Ant 正在向其中添加 /bin - 因此找不到任何 exe。它发生在我身上:}
确保不使用尾随分号: 这不起作用:
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29;
这将:
set JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_29
我遇到了类似的问题。我将链接以从 Maven 构建运行 Ant 任务,但我遇到了问题。我已将其修复为以下步骤:
它对我有用。
为了解决这个问题,在 window->preferences->ant-> runtime 添加 tools.jar 文件。
在 Eclipse 中,将已安装的 JRE 设置设置为项目中的 JDK(项目属性 -> Java 构建路径 -> 库),或首选项中的全局默认设置(Java->已安装的 JRE)。eclispe 设置比系统变量强。
我希望您了解系统和用户环境变量。用户优先于系统。如果您在系统变量中设置了 JAVA_HOME 并且如果在用户变量中有相同的条目,那么您将只获得后者。
右键单击我的电脑,转到属性,选择高级选项卡,然后单击环境变量以查看用户和系统环境变量的列表。
分号让我失望:我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页面声明使用分号,但这似乎破坏了它。
我遇到了同样的问题,将 javac 标记中的可执行属性设置为 javac.exe 的位置为我解决了这个问题。这解决了问题
<javac srcdir="${srcDir}" destdir="${buildDir}" fork="true" executable="C:\Program Files\Java\jdk1.7.0_03\bin\javac"/>
如果您已JAVA_HOME
设置但其中有错字,您还会看到对 jre6 路径的虚假引用。
当其他一切都正确时,请尝试以下
注意:为您要使用的 java 编译器添加 tools.jar,当存在多个 tools.jar(java 编译器)时,通过在 tools.jar 列表中向上移动它来优先使用它。
实际上在 superuser.com 上找到了这个答案,但我不得不将 tools.jar 从我的 JDK\lib 目录复制到 JRE\lib 目录。
零意义......我唯一能想到的是 Sun 在最新的 Java 运行时(Java 7 Update 11)中引入了这个错误,或者在 Ant 中如何读取当前 JDK 位置的错误(JRE 比 JDK 更新得更多)显然这对 Sun 来说也是愚蠢的......他们每次更新 JRE 时都应该发布 JDK)。
我的 JAVA_HOME 设置正确。我通过“设置 JAVA_HOME”确认。它指向我的 JDK 目录并且拼写正确。但是,Ant 声称它找不到 javac,但认为 JAVA_HOME 在我的 JRE 目录中。
在最新的 Sun JRE7 更新(10 和 11)之前,我的系统运行良好。蚂蚁是版本 1.8.4
只需从以下步骤设置 JDK 路径:
转到“运行”-> 外部工具-> 外部工具配置
-> 选择 'JRE' 然后从下拉列表中选择可用的 JDK 。前任。jdk1.8.0_25
仅供参考,我使用的是 Windows 7,必须重新启动 Windows 才能使新的 JAVA_HOME 设置生效。
有同样的问题;
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
快速解决相同的问题是
将 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。
遇到这个问题很常见。我无法在我的系统中设置任何特定的 Java 主目录,因为我有 2 个不同版本的 Java(Java 6 和 Java 7)用于不同的环境。为了解决这个问题,我在打开 build.xml 文件时在运行配置中包含了 JDK 路径。这样,2 个不同的构建文件使用 2 个不同的 Java 版本进行构建。我认为这个问题可能有更好的解决方案,但至少上述方法避免设置 JAVA_HOME 变量。
我有同样的问题。JAVA_HOME 指向的我的 JDK 包没有任何 tools.jar 确保您的 JDK 安装有 tools.jar
(显然消息错误令人困惑)
将环境变量中的 JAVA_HOME 设置为D:\Program Files\IBM\SDP\jdk
不提供任何引号或分号。这对我有用。请尝试解决方案。实际上,在 ant.bat 中,它会检查是否合适JAVA_HOME
,以防 ant.bat 无法找到它,那么它会JAVA_HOME
指向默认的 JRE。
我也面临同样的问题。我使用的是 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。
我在使用 Jenkins 构建项目时遇到了这个问题。首先是找不到ant.bat
,通过将ant.bat的路径添加到系统环境变量路径来解决。然后ant找不到jdk目录。通过右键单击my computer > properties > advanced > environment variables
并创建一个名为的新环境变量JAVA_HOME
并将其赋值为C:\Program Files\Java\jdk1.7.0_21
. 不要在用户变量中创建此环境变量。仅在系统变量下创建它。
在这两种情况下,我都必须重新启动系统。
如果需要使用内置的 eclipse jdk 在 eclipse 中运行 ant,请在 build.xml 中添加以下行
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>