无法找到tools.jar

问题描述 投票:169回答:29

我正在用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不存在。

java tools.jar
29个回答
182
投票

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


4
投票

如果您已经安装了JDK 9.0.1,那么您也会遇到此问题,因为不推荐使用tools.jar。见migration document


3
投票

转到安装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”


2
投票

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

Ant仍然试图在tools.jar文件夹中找到C:\Program Files\Java\jre6\lib。 我通过添加JAVACMD环境变量并将其路径设置为java.exe文件夹中的jdk来修复它。 在我的情况下,它是C:\Program Files\Java\jdk1.6.0_45\bin\java.exe


2
投票

在eclipse窗口>首选项> Java>已安装的JRE中,我将目录指向jdk 1.7中的jre目录并为我工作了文件,例如C:\ Program Files \ Java \ jdk1.7.0_71 \ jre


2
投票

我在我的C:\Program Files\Java\jdk1.7.0_79中使用了JDK_path(JAVA_HOME),在我的PATH中也使用了JDK_path \ bin。但是,我的蚂蚁仍在使用JRE而不是JDK。

问题是我在C:\ProgramData\Oracle\Java\javapath变量中的JDK_path之前有PATHbe。我只是在oracle之前移动了我的JDK_path并解决了问题。


2
投票

您可能在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

1
投票

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

关于将tools.jar复制到正确位置的所有答案充其量只是一个糟糕的想法。

确保您的IDE能够按照设计和预期的方式找到这些罐子。


1
投票

通过在运行之前设置JAVA_HOME变量,我在windows os中解决了它,如下所示:

设置JAVA_HOME = C:\ Program Files \ Java \ jdk1.8.0_111


1
投票

正如许多人所提到的,看起来您正在查找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文件夹中。


0
投票
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

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

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


0
投票

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


0
投票

maven-compiler-plugin使用jdk,而不是jre,tools.jar在C:\ Program Files \ Java \ jdk1.6.0 \ lib \ tools.jar中你必须用jdk配置项目JRE System Libary,而不是jar。这是最简单的解决方案。


0
投票
  • 右键单击您的ant文件
  • 转到“运行方式”,然后单击“Ant Build ...”
  • 转到“JRE”选项卡
  • 选择JDK而不是JRE

0
投票

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


0
投票

对我来说有什么用:我下载了旧版本的Java 1.7

我实际上在安装1.7版本之后从C:/ program files X86 / Java BUT设置了我的JAVA_HOME我在程序文件/ Java中有另一个Java。此刻我在这里找到了tools.jar。然后我改变了这条新路径,它正在发挥作用


0
投票

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


0
投票

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


0
投票

这是Windows的解决方案:在计算机>高级系统设置>高级>环境变量...中,在系统变量中添加:

enter image description here


0
投票

我已经下载了tools.jar,之后我将它复制到错误消息中的路径中。

C:\ Program Files \ Java \ jdk-11.0.1 \ bin>粘贴此处tools.jar

之后我重新启动了Spring Tool Suit 4,一切正常。当我试图解决这个问题时,我制作了新的环境变量:控制面板/系统/ Advenced /环境变量/新名称:JAVA_HOME值:C:\ Program Files \ Java \ jdk-11.0.1但我不知道是这是必要的。


0
投票

也许你已经在操作系统中更新了JRE,并且添加了在环境变量的“路径”中添加了一个覆盖你的JAVA_HOME的条目“... / Oracle / jer”。尝试通过离开JAVA_HOME将其从“路径”中删除。


38
投票
  1. 安装Java SDK
  2. 添加名为JAVA_HOME的系统环境变量,其值为JDK location。 转到控制面板\系统和安全\系统。高级系统设置,环境变量,系统变量,新...示例: 变量名称:JAVA_HOME 变量值:C:\ Program Files \ Java \ jdk1.7.0_21
  3. 关闭/重新打开CMD窗口,以便在尝试重新运行ant命令之前新变量生效。

28
投票

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


10
投票

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


10
投票

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

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

7
投票

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

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

它应该是这样的:

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

5
投票

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

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

你应该看到预期的结果。


4
投票

我在linux机器上遇到了同样的问题。起初我很沮丧,因为我已经安装了JDK和JRE。我同时使用版本1.6,1.7和1.8,并且我已经玩了很多替代方案来正确设置所有内容。

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

$JAVA_HOME\..\lib\tools.jar

$JAVA_HOME变量直接指向我的jdk文件夹(/usr/local/java,这也是正确的$PATH条目和替代sym链接)。它实际上搜索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。请记住,OS替代方案仍应引用JDK。

© www.soinside.com 2019 - 2024. All rights reserved.