运行ant时“无法找到tools.jar” [重复]

Posted

技术标签:

【中文标题】运行ant时“无法找到tools.jar” [重复]【英文标题】:"Unable to locate tools.jar" when running ant [duplicate] 【发布时间】:2012-02-25 12:42:31 【问题描述】:

运行 ant 时,我收到以下消息:

Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar

我将 JAVA_HOME 设置为C:\Program Files\Java\jdk1.7.0_02,PATH 包括C:\Program Files (x86)\Java\jdk1.7.0_02\bin,CLASSPATH 包括C:\Program Files (x86)\Java\jdk1.7.0_02,ANT_HOME 设置为C:\ant

似乎 ant 忽略了所有这些设置并在其他地方寻找 tools.jar。没有指向 jre6 路径的环境变量。任何想法为什么?

【问题讨论】:

你确定ant文件夹里没有类路径设置吗? 我不能说,但我可能会遗漏一些东西。我会寻找什么来找到它? 请验证系统环境变量的 JAVA_HOME 路径...它必须像“C:\Program Files\Java\jdk1.6.0_12\”并尝试杀死所有 java 进程并尝试它将运行 100%。 安装JDK,将新的系统变量“JAVA_HOME”添加到并将JAVA_HOME%\bin添加到系统变量“path” 也许您已经更新了操作系统中的 JRE,并且在环境变量的“路径”中添加了一个条目“.../Oracle/jer”,它会覆盖您的 JAVA_HOME。尝试通过离开 JAVA_HOME 将其从“路径”中删除。 【参考方案1】:

有两个目录看起来像 JDK。

  C:\Program Files\Java\jdk1.7.0_02
  C:\Program Files (x86)\Java\jdk1.7.0_02\

这可能是因为安装了 64 位和 32 位的 JDK?无论如何,ant.bat 看到的java.exe 应该来自JDK。如果 JRE 的 java.exe 在路径中最先出现,则将用于猜测 JDK 位置。

将 'C:\Program Files (x86)\Java\jdk1.7.0_02\bin' 或 'C:\Program Files\Java\jdk1.7.0_02' 作为路径中的第一个参数。

进一步的步骤:

您可以输出ant -diagnostics 并寻找有趣的键。 (假设 Sun/Oracle JDK)。

 java.class.path 
 java.library.path
 sun.boot.library.path

(在我的例子中,tools.jar 出现在 java.class.path 中)

【讨论】:

感谢 -diagnostics 提示。这表明 java.home 系统属性指向 1.6 JRE,尽管所有环境变量都指向 1.7。不能解决问题,但这是进一步调查的起点。 ant 需要 'JDK'。 JDK 中的 java.exe 必须首先出现。查看 Mads Hansen 的评论 我有同样的错误。当我尝试 ant -diagnostics 时,我得到了 java.home:C:\Program Files\Java\jre6。但我已将 JAVA_HOME 设置为 C:\Program Files (x86 )\Java\jdk1.6.0_25.什么问题 @user1767260 : C:\Program Files (x86)\Java\jdk1.6.0_25 是路径中的第一个条目吗? system32 中的 java.exe 是一个虚拟的:参见mindprod.com/jgloss/javaexe.html#MULTIPLES。你可以把你的 JDK/bin 作为第一个入口。【参考方案2】:

我也遇到了同样的问题,所以我只是从末尾删除了 JDK 路径,甚至在所有 System 或 Windows 32 路径之前将其放在 start 中。

之前是这样的:

C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Microsoft SQL Server\100\ Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Users\ Rajkaran\AppData\Local\Smartbar\Application\;C:\Users\Rajkaran\AppData\Local\Smartbar\Application\;C:\Program Files\doxygen\bin;%JAVA_HOME%\bin; %ANT_HOME%\bin

所以我是这样设计的:

%JAVA_HOME%\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\ ;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn \VSShell\Common7\IDE\;C:\Users\Rajkaran\AppData\Local\Smartbar\Application\;C:\Users\Rajkaran\AppData\Local\Smartbar\Application\;C:\Program Files\doxygen\bin; %ANT_HOME%\bin

【讨论】:

运行类似 '''where java''' 的命令,它将列出 java 是否在这些其他目录中,并优先于您的 JAVA_HOME 路径以及哪个 java 是第一个。这可能会显示其他路径正在与它混淆。我已经看到其他 java 安装(JRE 和 JDK)也将 java 放置在 ProgramData\Oracle 和 Windows\System32 中,因此您也可以从这些目录中清除 java 程序。【参考方案3】:

PATH 中项目的顺序很重要。如果各种 java 安装有多个条目,将使用 PATH 中的第一个条目。

在安装 Oracle 等产品后,我遇到了类似的问题,该产品将 它的 JRE 放在 PATH 的开头。

确保要加载的 JDK 是 PATH 中的第一个条目(或至少出现在 C:\Program Files\Java\jre6\bin 出现之前)。

【讨论】:

【参考方案4】:

确保使用 JDK 的根文件夹。不要将“\lib”添加到 tools.jar 物理所在路径的末尾。我花了一个小时才弄明白。此外,这篇文章将帮助您了解 Ant 在哪里寻找 tools.jar:

Why does ANT tell me that JAVA_HOME is wrong when it is not?

【讨论】:

【参考方案5】:

    尝试按照本教程再次检查:http://vietpad.sourceforge.net/javaonwindows.html

    尝试重新启动系统。

    如果没有,尝试运行“cmd”并在其中输入“java”,它会打印什么吗?

【讨论】:

对我的回答进行反思可能会很好。你试过什么? 我尝试了所有这些,但没有成功

以上是关于运行ant时“无法找到tools.jar” [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Ant + Vista 64:“无法找到 tools.jar”(jre/jdk 冲突?)

无法找到tools.jar

什么是运行Java 6项目的ANT版本? [重复]

Ant脚本简介与基础知识

Jenkins - 同时运行单个构建的实例

Android 项目使用 Ant 构建良好,但出现运行时错误