找不到tools.jar

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

我有这个错误:

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

我安装了JDK,系统中有文件夹:C:\Program Files\Java\jre6\lib,但没有文件tools.jar

379702 次浏览

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

C:\Program Files\Java\jre6\lib
^^^^

它应该是这样的:

C:\Program Files\Java\jdk1.6.0_24

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

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

如果您已经安装了JDK,那么

..Java/jdkx.x.x

文件夹必须存在于那里,所以在停止它,并给出完整的路径,如

C:\Program Files\Java\jdk1.6.0\lib\tools.jar

确保正确设置了类路径,并指向已安装的JDK的正确版本。另外,您是否正在使用Open JDK?我以前在尝试从Open JDK迁移到Suns JDK时遇到过这个问题。是如何解决这个问题的一个例子。

如果这对任何人来说仍然是一个问题,我对前面的答案做了一些澄清。我在使用只安装了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

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

不要花太多时间寻找tools.jar。如果你遇到这样的错误,不要沮丧。

如果已经安装了Java JDK 1.5,请转到lib文件夹,tools.jar应该在那里可用。将其复制并粘贴到Antbin文件夹中,然后尝试使用命令ant -version

您应该会看到预期的结果。

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

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

转到安装Java的JDK路径

例如,在我的PC中,JDK安装在以下路径中

“ C:\Program Files\Java\JDK1.7.0_17\”;

之后,转到lib文件夹,例如“ C:\Program Files\Java\jdk1.7.0_17\lib ”

在lib目录中有一个tool.jar文件

复制此文件并将其粘贴到jre7目录的lib目录中 例如,

“ C:\Program Files\Java\jre7\lib ”

  1. 安装Java SDK

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

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

确保已将%Java_HOME%和%Java_HOME%/bin路径添加到PATH变量中。

所有关于将tools.jar复制到正确位置的答案都是一个糟糕的主意。

确保您的IDE可以按照设计和预期的方式找到这些JAR.

maven-compiler-plugin使用JDK而不是JRE, jar位于C:\Program Files\Java\jdk1.6.0\lib\tools.jar中 必须使用JDK而不是JAR配置项目JRE系统库。这是最简单的解决方案。

即使在安装了Java JDK并将JAVA_HOME设置为..\jdk1.6.0_45\bin文件夹之后,我还是遇到了同样的问题。

Ant仍在尝试在C:\Program Files\Java\jre6\lib文件夹中查找tools.jar
我已通过添加JAVACMD环境变量并将其路径设置为jdk文件夹中的java.exe来修复此问题。
在我的例子中,它是C:\Program Files\Java\jdk1.6.0_45\bin\java.exe

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

sudo apt-get install openjdk-7-jdk openjdk-7-jre

在Eclipse窗口>Preferences>Java>Installed JRE中,我将目录指向JDK 1.7中的JRE目录,并为我处理文件 例如,C:\Program Files\Java\jdk1.7.0_71\jre

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

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

$JAVA_HOME\..\lib\tools.jar

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

$JAVA_HOME\..\lib\tools.jar

将决心

/usr/local/lib/tools.jar

这不是一个有效的位置。

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

$JAVA_HOME\..\lib\tools

它现在决定

/usr/local/java/jre/../lib/tools.jar

最后到

/usr/local/java/lib/tools.jar

这是tools.jar真正驻留的地方。

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

我的JAVA_HOME中有JDK_PATH(C:\Program Files\Java\jdk1.7.0_79),PATH中也有JDK_PATH\bin.但是,我的Ant仍然使用JRE而不是JDK.

问题是我在PATH变量中的JDK_路径之前有C:\ProgramData\Oracle\Java\javapath。我只是将我的JDK_路径移到Oracle路径之前,问题就解决了。

你在Ubuntu上可能会遇到类似的问题:

Embedded error: tools.jar not found: /usr/lib/jvm/java-7-openjdk-amd64/jre/../lib/tools.jar

问题出在未正确设置Java_HOME.

因此,在使用Java8的Ubuntu 14.04 x64上:

sudo apt-get install openjdk-8-jdk openjdk-8-jre
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
  • 右键单击Ant文件
  • 转到“运行方式”,然后单击“ Ant Build..”。
  • 转到“ JRE ”选项卡
  • 选择JDK而不是JRE

为了解决这个问题,我简单地将tools.jar文件从C:\Program Files\Java\jre1.8.0_112\lib复制到C:\Program Files\Java\jdk1.8.0_112\lib,这样我就有了两个tools.jar文件而不是一个,问题就消失了。

我已经在Windows操作系统中解决了这个问题,方法是在运行之前设置Java_HOME变量,如下所示:

将Java_设置为HOME=C:\Program Files\Java\jdk1.8.0_111

对我来说,什么是工作:我下载了一个旧版本的Java1.7。

实际上,我在C:/ProgramFiles/x86/Java中设置了Java_,但在安装1.7版本后,我在ProgramFiles/Java中有了另一个Java.这时,我在这里找到了tools.jar.然后我改变了这条新的道路,它正在发挥作用。

我也面临着同样的错误。 在将Java_HOME PATH设置为C:\Program Files\Java\JDK1.8.0_121之后,该文件被删除。 在系统PATH变量中定义%Java_HOME%\bin后,请确保路径中不包含bin,并且jdk1.8.0_121后面没有斜杠。

如果您安装了JDK 9.0.1,您也会遇到这个问题,因为tools.jar已被弃用。请参阅迁移文档

如果您在RHEL环境中,则包含tools.jar的包名将以“ openjdk-devel ”结尾。

这是针对Windows的解决方案:在计算机>高级系统设置>高级>环境变量。中,在系统变量中添加以下内容:

enter image description here

我已经下载了tools.jar,然后在错误消息中将其复制到PATH中。

C:\Program Files\Java\JDK-11.0.1\bin>粘贴到这里tools.jar

在那之后,

我重新启动了Spring Tool Suit 4,一切正常。 当我试图解决这个问题时,我创建了一个新的环境变量: 控制面板/系统/Advenced/环境变量/New 名称:Java_主页 值:C:\Program Files\Java\JDK-11.0.1 但我不知道有没有必要。

也许您已经更新了操作系统中的JRE,并且在环境变量的“ PATH ”中添加了一个条目“../oracle/Jer ”,该条目会覆盖您的Java_HOME. 尝试通过离开Java_主页来将其从“路径”中删除。

正如许多人所提到的,看起来您是在JRE中而不是JDK中查找tools.jar文件。

我还想提一下,在最新版本的JDK上,没有更多的tools.jar文件。我今天下载了最新的JDK(JDK版本12),但我找不到任何tools.jar.我必须在这里下载JDK版本8(1.8.0)https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html来获取tools.jar文件。我下载了该版本,获取了tools.jar文件并将其放入我最新版本的lib文件夹中。

我最近解决了tool.jar文件错误。我正在使用Eclipse Oxygen IDE.它工作得很好,很容易。在您的系统上重复这些步骤

  1. 根据您的JRE JDK版本下载tool.jar文件。假设tool.jar文件是1.8.0.tool.jar

  2. 下载1.8.0 tool.jar文件后,重命名与tool.jar一样

  3. 然后转到JDK安装文件夹

  4. 然后转到lib文件夹,打开它。

  5. 并粘贴在这里

  6. 您将把此类型设置为路径。E:\jdk 8\lib\tools.jar

如果有帮助的话,我的问题是我的PATH环境变量中有2个条目指向包含javaw可执行文件的位置。

我清理了变量以确保“%Java_HOME%\bin ”是引用包含我的Java可执行文件的位置的唯一条目。

当未设置环境变量Java_HOME或指向错误的目录时,会发生这种情况。通过运行以下命令,您可以看到Ant所具有的价值:

ant -diagnostics

并查找显示java.home的行。如果您安装了grep,则可以简单地运行:

ant -diagnostics | grep java.home

要解决此问题,请将JAVA_HOME环境变量设置为JDK目录。虽然变量的设置在*nix和Windows之间略有不同,但其余部分在所有操作系统上都是一样的。因此,无论您使用的是Windows提供的GUI,还是setsetx命令,只要在调用ant之前设置该值即可(如果已全局设置该值,则在打开shell/终端窗口之前,该值必须存在)。

例如,在设置JAVA_HOME之后,您可以运行ant -version,并获得结果,例如

Apache Ant(TM)版本1.10.8于2020年5月10日编译

步骤1检查JDK是否已安装。并设置可变路径。 步骤2:卸载Eclipse并重新安装。否则,它将继续成为一个问题。

值得注意的是,自Java9以来,tools.jar已从JDK中删除。https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-055EA9F4-835E-463F-B9E1-9081B3D9E55D

如果有人在使用JDK 9+编译Java程序时遇到此问题,您可能需要检查项目的依赖关系。

在我的例子中,我尝试使用AspectJ和Maven插件org.codehaus.mojo:aspectj-maven-plugin:1.11来编译一个项目。在网上搜索之后,我发现了一个支持Java9+的替代品:dev.aspectj:aspectj-maven-plugin:1.13.M3

最新版本的Java在lib文件夹中没有tools.jar.删除环境变量中的tools.jar条目,然后重试。