我正在用 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 运行时环境 (JRE) 而不是 Java 开发工具包 (JDK)。后者有tools.jar、java.exe、javac.exe等。
如果这对任何人来说仍然是一个问题,我对以前的答案有一些澄清。我在只安装了 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"
错误才消失。
安装Java SDK。
添加一个名为JAVA_HOME的系统环境变量,其值为 JDK 位置。
转到控制面板\系统和安全\系统。高级系统设置、环境变量、系统变量、新建... 示例:
变量名:JAVA_HOME
变量值:C:\Program Files\Java\jdk1.7.0_21
关闭/重新打开 CMD 窗口,以便新变量在尝试重新运行 ant 命令之前生效。
我有同样的问题, 复制 C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar
到 C:\Program Files\Java\jre6\lib\ext
为我工作
如果您安装了 JDK 9.0.1,您也会遇到此问题,因为 tools.jar 已被弃用。请参阅迁移文档。
如果您在 Linux 中,您可以通过在系统上安装 java 来解决此问题:
sudo apt-get install openjdk-7-jdk openjdk-7-jre
将您的JAVA_HOME
环境变量设置为指向C:\Program Files\Java\jdk1.7.0_02
.
不,根据您的目录结构,您安装的是 JRE,而不是 JDK。有区别。
C:\Program Files\Java\jre6\lib
^^^^
它应该是这样的:
C:\Program Files\Java\jdk1.6.0_24
不要花太多时间寻找tools.jar
。如果你遇到这样的错误,不要沮丧。
如果您已经拥有 java JDK 1.5,请转到您的lib
文件夹,tools.jar
那里应该可以使用。将其复制并粘贴到您的 antbin
文件夹中,然后尝试使用 command ant -version
。
您应该会看到预期的结果。
我在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 的 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”
在 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
即使在安装 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
正如许多人提到的那样,您似乎在 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 文件夹中。
值得注意的是,自 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
.
通过在运行之前设置 JAVA_HOME 变量,我已经在 Windows 操作系统中解决了它,如下所示:
设置 JAVA_HOME=C:\Program Files\Java\jdk1.8.0_111
确保将 %JAVA_HOME% 和 %JAVA_HOME%/bin 路径都添加到 PATH 变量中。
所有关于将 tools.jar 复制到正确位置的答案充其量都是一个坏主意。
确保您的 IDE 可以按照设计和预期的方式找到这些 jar。
在eclipse窗口>首选项>Java>安装的JRE中,我将目录指向jdk 1.7中的jre目录,我为我工作了文件,例如C:\Program Files\Java\jdk1.7.0_71\jre
我的 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 之前,问题就解决了。
解决这个问题我只是将 tools.jar 文件从 C:\Program Files\Java\jre1.8.0_112\lib 复制到 C:\Program Files\Java\jdk1.8.0_112\lib 以便我有两个 tools.jar文件而不是一个,问题消失了。
maven-compiler-plugin 使用 jdk,而不是 jre,tools.jar 在 C:\Program Files\Java\jdk1.6.0\lib\tools.jar 您必须使用 jdk 而不是 jar 配置项目 JRE 系统库。这是最简单的解决方案。
确保您的类路径设置正确并指向您已安装的正确版本的 JDK。另外,您使用的是 Open JDK 吗?在我尝试从开放 JDK 迁移到 Suns JDK 之后,我曾经遇到过这个问题。 这是如何解决该问题的示例。
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
当未设置环境变量 JAVA_HOME 或指向错误的目录时会发生这种情况。您可以通过运行以下命令查看 Ant 的值:
ant -diagnostics
并寻找显示的行java.home
。如果您已经grep
安装,那么您可以简单地运行:
ant -diagnostics | grep java.home
要解决此问题,请将JAVA_HOME
环境变量设置为 JDK 目录。虽然在 *nix 和 Windows 之间设置变量略有不同,但其余的在所有操作系统上都一样。因此,使用 Windows 提供的 GUI 或set
orsetx
命令都没有关系,只要在调用之前设置值即可ant
(如果您已全局设置它,那么它必须在您打开 shell/终端窗口之前存在)。
设置后,JAVA_HOME
您可以运行ant -version
,例如,并得到结果,例如
Apache Ant(TM) 版本 1.10.8 于 2020 年 5 月 10 日编译
Step1 检查你的jdk是否安装。并设置变量路径。Step2 卸载你的 eclipes 并重新安装它。否则将继续成为问题
也许您已经更新了操作系统中的 JRE,并且在环境变量的“路径”中添加了一个条目“.../Oracle/jer”,它会覆盖您的 JAVA_HOME。尝试通过离开 JAVA_HOME 将其从“路径”中删除。
如果它有帮助,对我来说问题是我的 PATH 环境变量中有 2 个条目指向包含 javaw 可执行文件的位置。
我清理了变量以确保“%JAVA_HOME%\bin”是唯一引用包含我的 java 可执行文件的位置的条目。
我也面临同样的错误。这在将 Java_Home 路径设置为 C:\Program Files\Java\jdk1.8.0_121 后被删除。请确保在系统路径变量中定义 %JAVA_HOME%\bin 后,路径中不包含 bin,并且 jdk1.8.0_121 之后没有斜杠。
我已经下载了 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 但我不知道是有必要。
对我来说什么是有效的:我下载了 Java 1.7 的旧版本
实际上,我从 C:/program files X86/Java 设置了我的 JAVA_HOME,但是在安装 1.7 版本后,我在程序文件/Java 中有另一个 Java。而此时我在这里找到了 tools.jar。然后我改变了这条新路径并且它正在工作
如果您在 RHEL 环境中,则包含 tools.jar 的包名称将以“openjdk-devel”结尾。
我最近解决了 tool.jar 文件错误。我正在使用日食氧ide。它完美而简单。在您的系统上重复这些步骤
根据你的 jre jdk 版本下载 tool.jar 文件。让我们假设 tool.jar 文件是 1.8.0.tool.jar
下载 1.8 .0 tool.jar 文件后重命名为 tool.jar
然后去你的jdk安装文件夹
然后去lib文件夹打开它
并粘贴在这里
您将创建此类型路径。E:\jdk 8\lib\tools.jar