194

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

4

34 回答 34

200

是的,您已经下载并安装了 Java 运行时环境 (JRE) 而不是 Java 开发工具包 (JDK)。后者有tools.jar、java.exe、javac.exe等。

于 2011-04-20T13:10:15.823 回答
91

如果这对任何人来说仍然是一个问题,我对以前的答案有一些澄清。我在只安装了 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"错误才消失。

于 2012-05-09T16:00:51.300 回答
42
  1. 安装Java SDK

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

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

于 2013-05-21T17:57:36.817 回答
31

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

于 2013-03-18T07:21:01.993 回答
14

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

于 2017-12-27T20:03:11.890 回答
10

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

sudo apt-get install openjdk-7-jdk openjdk-7-jre
于 2014-09-30T22:52:01.450 回答
10

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

于 2013-01-25T01:33:19.057 回答
7

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

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

它应该是这样的:

C:\Program Files\Java\jdk1.6.0_24
于 2011-04-20T13:09:20.847 回答
5

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

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

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

于 2012-09-29T10:22:43.433 回答
5

我在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。

于 2015-06-24T11:44:30.883 回答
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 forlder 中,例如

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

于 2013-04-03T05:53:37.187 回答
3

在 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
于 2016-06-26T20:24:33.767 回答
2

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

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

于 2014-01-28T05:20:47.243 回答
2

正如许多人提到的那样,您似乎在 JRE 而不是 JDK 中查找 tools.jar 文件。

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

于 2019-04-02T20:51:54.063 回答
2

值得注意的是,自 Java 9 以来,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。在网上搜索后,我找到了一个支持 Java 9+ 的替代方案:dev.aspectj:aspectj-maven-plugin:1.13.M3.

于 2021-07-09T19:52:57.580 回答
2

通过在运行之前设置 JAVA_HOME 变量,我已经在 Windows 操作系统中解决了它,如下所示:

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

于 2017-05-17T11:16:51.707 回答
1

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

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

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

于 2013-10-06T22:09:04.913 回答
1

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

于 2015-05-02T18:09:43.117 回答
1

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

问题出C:\ProgramData\Oracle\Java\javapath在我的 JDK_pathPATH变量之前。我只是将我的 JDK_path 移到了 oracle 之前,问题就解决了。

于 2016-04-27T20:11:04.780 回答
1

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

于 2017-02-01T09:53:28.337 回答
0

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

于 2013-12-28T07:29:38.803 回答
0

确保您的类路径设置正确并指向您已安装的正确版本的 JDK。另外,您使用的是 Open JDK 吗?在我尝试从开放 JDK 迁移到 Suns JDK 之后,我曾经遇到过这个问题。 是如何解决该问题的示例。

于 2011-04-20T13:14:55.983 回答
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
于 2011-04-20T13:14:10.067 回答
0

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

ant -diagnostics

并寻找显示的行java.home。如果您已经grep安装,那么您可以简单地运行:

ant -diagnostics | grep java.home

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

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

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

于 2020-08-16T15:45:24.260 回答
0

Step1 检查你的jdk是否安装。并设置变量路径。Step2 卸载你的 eclipes 并重新安装它。否则将继续成为问题

于 2020-10-25T11:58:37.210 回答
0

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

于 2019-01-31T15:14:10.637 回答
0

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

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

于 2019-12-12T11:41:38.093 回答
0
  • 右键单击您的 ant 文件
  • 转到“运行方式”,然后单击“Ant Build...”
  • 转到“JRE”选项卡
  • 选择 JDK 而不是 JRE
于 2016-09-30T10:03:38.673 回答
0

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

于 2017-09-07T12:40:39.367 回答
0

这是 Windows 的解决方案:在Computer > Advanced system settings > Advanced > Environment variables...中,在System variables中添加:

在此处输入图像描述

于 2018-08-05T12:52:37.000 回答
0

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

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

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

于 2018-12-04T07:39:25.087 回答
0

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

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

于 2017-05-28T19:13:13.313 回答
0

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

于 2018-07-24T15:01:25.717 回答
-1

我最近解决了 tool.jar 文件错误。我正在使用日食氧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

于 2019-12-05T08:43:50.460 回答