无法找到tools.jar

oli*_*dev 176 java tools.jar

我正在用Java构建一个项目.

我有这个错误:

Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar
Run Code Online (Sandbox Code Playgroud)

我已经安装了JDK和文件夹:C:\Program Files\Java\jre6\lib在我的系统中,但文件tools.jar不存在.

duf*_*ymo 181

是的,您已经下载并安装了Java Runtime Environment(JRE)而不是Java Development Kit(JDK).后者有tools.jar,java.exe,javac.exe等.

  • 在ubuntu:`#apt-get install default-jdk`,错误消失. (17认同)
  • @olidev现在检查这个,但仍然无法停止指出问题!! 这怎么可能是你的答案?您已经提到已经安装了jdk和jre.我实际上面临着类似的问题,它仍在继续:-(.需要知道你是如何工作的? (7认同)
  • 将JAVA_HOME和/ bin目录添加到路径中.你意识到这个答案已经两年了,对吗? (6认同)
  • 钥匙?JDK.这就是工具的用武之地.JRE没有. (2认同)
  • 不必要.在我看来,他们可能将`JAVA_HOME`设置为`jdk`中的`jre`而不是`jdk`本身. (2认同)

Bla*_*ell 86

如果对任何人来说这仍然是一个问题,我对之前的答案有一点澄清.我使用只安装了JDK的ant遇到了同样的问题.虽然,JDK安装程序给了我一个这样的目录结构:

 Directory of C:\Program Files\Java

05/08/2012  09:43 AM    <DIR>          .
05/08/2012  09:43 AM    <DIR>          ..
05/08/2012  09:46 AM    <DIR>          jdk1.7.0_04
05/08/2012  09:19 AM    <DIR>          jre6
05/08/2012  09:44 AM    <DIR>          jre7
               0 File(s)              0 bytes
Run Code Online (Sandbox Code Playgroud)

当我运行ant时,它抱怨没有在jre7子目录下找到tools.jar.直到我set "JAVA_HOME=C:\Program Files\Java\jdk1.7.0_04"错误消失.

  • 这个.谢谢!(对于我们这些安装了各种jre/jdk版本的人) (7认同)

Jam*_*ruk 38

  1. 安装Java SDK.

  2. 添加名为JAVA_HOME的系统环境变量,其值为JDK location.
    转到控制面板\系统和安全\系统.高级系统设置,环境变量,系统变量,新...示例:
    变量名称:JAVA_HOME
    变量值:C:\ Program Files\Java\jdk1.7.0_21

  3. 关闭/重新打开CMD窗口,以便在尝试重新运行ant命令之前新变量生效.

  • JAVA_HOME变量修复了一切,非常感谢:) (4认同)
  • `PATH`**与**`/ bin`,`JAVA_HOME`**没有**`/ bin` (4认同)

小智 28

我有同样的问题,并 复制 C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar C:\Program Files\Java\jre6\lib\ext 为我工作

  • 使用明显不属于那里的类对本地安装进行污染可能会导致我的机器综合症.即使正式的构建过程到位,也就是这样.[tools.jar,其中包含用于支持JDK中的工具和实用程序的非核心类](http://docs.oracle.com/javase/8/docs/technotes/tools/windows/jdkfiles.html) (4认同)

Zor*_*ayr 10

JAVA_HOME环境变量设置为指向C:\Program Files\Java\jdk1.7.0_02.

  • 在我的情况下不起作用我已经设置了两个java_home (2认同)

mim*_*lea 10

如果你在Linux中,你可以通过在系统上安装java来解决这个问题:

sudo apt-get install openjdk-7-jdk openjdk-7-jre
Run Code Online (Sandbox Code Playgroud)

  • +1,使用Ubuntu 14.04 x64.适合我! (2认同)

Sea*_*oyd 7

不,根据您的目录结构,您已经安装了JRE,而不是JDK.有区别.

C:\Program Files\Java\jre6\lib
                      ^^^^
Run Code Online (Sandbox Code Playgroud)

它应该是这样的:

C:\Program Files\Java\jdk1.6.0_24
Run Code Online (Sandbox Code Playgroud)


小智 6

不要花太多时间寻找tools.jar.如果你得到这样的错误,不要生气.

如果您已经拥有java JDK 1.5,请转到您的lib文件夹,该文件夹tools.jar应该可用.将其复制并粘贴到您的ant bin文件夹中,然后尝试使用该命令ant -version.

你应该看到预期的结果.

  • 这种方法值得推荐吗? (2认同)

Iva*_*vov 5

我在 Linux 机器上遇到了同样的问题。一开始我很沮丧,因为我已经安装了JDK和JRE。我同时使用 1.6、1.7 和 1.8 版本,并且我尝试了很多替代方案以确保一切设置正确。

这个问题解决起来非常愚蠢,但却违反直觉。当我使用正确的 JDK 时,我注意到 maven 抱怨的工具 jar 的路径 - 它期望它是

$JAVA_HOME\..\lib\tools.jar
Run Code Online (Sandbox Code Playgroud)

$JAVA_HOME变量直接指向我的jdk文件夹(/usr/local/java这也是正确的$PATH条目和替代符号链接)。它实际上是在java目录之外搜索lib文件夹,因为:

$JAVA_HOME\..\lib\tools.jar
Run Code Online (Sandbox Code Playgroud)

将决心

/usr/local/lib/tools.jar
Run Code Online (Sandbox Code Playgroud)

这不是一个有效的位置。

为了解决这个问题,$JAVA_HOME变量应该指向这个位置/usr/local/java/jre(假设 JDK 路径是/usr/local/java)——jre每个 JDK 附带的 JDK 安装目录中实际上有一个文件夹。这个新设置将使 maven 查看 JRE 目录,它是 JDK 的一部分:

$JAVA_HOME\..\lib\tools
Run Code Online (Sandbox Code Playgroud)

现在决定

/usr/local/java/jre/../lib/tools.jar
Run Code Online (Sandbox Code Playgroud)

最后到

/usr/local/java/lib/tools.jar
Run Code Online (Sandbox Code Playgroud)

这才是tools.jar真正的所在。

因此,即使您确实使用 JDK 而不是 JRE,$JAVA_HOME 也必须指向 JRE。请记住,操作系统替代方案仍应引用 JDK。


Gra*_*hiu 5

如果已安装JDK 9.0.1,则由于tools.jar已被弃用,您还将遇到此问题。请参阅迁移文档

  • 添加有关如何迁移仍需要 tools.jar 的 Maven 构建的信息会很棒。 (2认同)