【问题标题】:Unable to locate tools.jar无法找到 tools.jar
【发布时间】:2011-08-09 12:06:04
【问题描述】:

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

【问题讨论】:

  • 我认为工具属于 JDK 而不是 JRE。不是吗? C:\Program Files\Java\jdk1.6.0_24\lib
  • 顺便说一句,令我吃惊的是程序实际上说出了它的外观。很少有程序能提供这种有用的线索。
  • 另见重复的问题:stackoverflow.com/q/9119479/3328979 答案总比这里好。

标签: java ant tools.jar


【解决方案1】:

值得注意的是,自 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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      当环境变量 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 日编译

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          【解决方案5】:

          我最近解决了 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

          【讨论】:

            【解决方案6】:

            正如许多人提到的,您似乎是在 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 文件夹中。

            【讨论】:

              【解决方案7】:

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

              【讨论】:

                【解决方案8】:

                我已经下载了 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 但不知道有没有必要。

                【讨论】:

                  【解决方案9】:

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

                  【讨论】:

                    【解决方案10】:

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

                    【讨论】:

                      【解决方案11】:

                      如果您安装了 JDK 9.0.1,您也会遇到此问题,因为 tools.jar 已被弃用。见migration document

                      【讨论】:

                      • 这个答案在今天比之前被支持的答案更相关
                      【解决方案12】:

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

                      【讨论】:

                        【解决方案13】:

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

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

                        【讨论】:

                          【解决方案14】:

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

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

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

                          【讨论】:

                          • 这种方法值得推荐吗?
                          【解决方案15】:

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

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

                          【讨论】:

                          • 我不得不强迫这个。 Ant 10+ 正在一个未知变量中寻找 JDK。我找不到它从哪里获取 JDK,但是当我可以在命令行中强制使用 JAVA HOME 时,它就可以工作了。
                          【解决方案16】:

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

                          【讨论】:

                            【解决方案17】:
                            • 右键单击您的 ant 文件
                            • 转到“运行方式”,然后单击“Ant Build...”
                            • 转到“JRE”标签
                            • 选择 JDK 而不是 JRE

                            【讨论】:

                              【解决方案18】:

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

                              【讨论】:

                                【解决方案19】:

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

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

                                【讨论】:

                                  【解决方案20】:

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

                                  【讨论】:

                                  • 我在 windows 上遇到了同样的问题,用你的方式解决了我的问题。
                                  • 我已经尝试了所有这些并且仍然遇到 tools.jar 的问题。 Randoop值得努力吗?这意味着它会生成体面的单元测试吗?令人沮丧的是,我的 Windows 机器上的所有其他 Java 程序都可以正常工作。
                                  • @MrSmith ,当您收到错误时,Randoop 查找的路径是什么。也许 Randoop 有自己的环境设置来告诉它 JRE 在哪里?另外,您是否在更改环境变量后重新打开了您的 shell 窗口(如果从 shell 运行)?
                                  【解决方案21】:

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

                                  【讨论】:

                                    【解决方案22】:

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

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

                                    【讨论】:

                                    • 显然,对于 Java 8,您可以使用 'sudo apt-get install openjdk-8-jdk openjdk-8-jre'
                                    【解决方案23】:

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

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

                                    【讨论】:

                                      【解决方案24】:

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

                                      【讨论】:

                                        【解决方案25】:

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

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

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

                                        【讨论】:

                                          【解决方案26】:
                                          1. 安装Java SDK

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

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

                                          【讨论】:

                                          • JAVA_HOME 变量修复了一切,非常感谢 :)
                                          • PATH /bin, JAVA_HOME 没有 /bin
                                          • 谢谢,我找了好几个小时!!
                                          • 在 Windows8.1 上像魅力一样工作
                                          • 像魅力一样工作!!谢谢
                                          【解决方案27】:

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

                                          【讨论】:

                                            【解决方案28】:

                                            我遇到了同样的问题,copying C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar to C:\Program Files\Java\jre6\lib\ext 为我工作

                                            【讨论】:

                                            【解决方案29】:

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

                                            【讨论】:

                                              【解决方案30】:

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

                                              【讨论】:

                                              • 这个。谢谢! (对于我们这些安装了各种 jre/jdk 版本的人)
                                              • 它对我有用..早些时候我也给出了 \bin 的路径..这就是问题
                                              • 谢谢,我希望我能给你 2 个 ups!
                                              猜你喜欢
                                              • 2015-05-26
                                              • 2011-10-04
                                              • 1970-01-01
                                              • 1970-01-01
                                              • 1970-01-01
                                              • 1970-01-01
                                              • 2014-03-26
                                              • 2012-02-25
                                              相关资源
                                              最近更新 更多