我正在用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。
C:\Program Files\Java\jre6\lib
tools.jar
不,根据您的目录结构,您安装的是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",错误才消失。
set "JAVA_HOME=C:\Program Files\Java\jdk1.7.0_04"
不要花太多时间寻找tools.jar。如果你遇到这样的错误,不要沮丧。
如果已经安装了Java JDK 1.5,请转到lib文件夹,tools.jar应该在那里可用。将其复制并粘贴到Antbin文件夹中,然后尝试使用命令ant -version。
lib
bin
ant -version
您应该会看到预期的结果。
将JAVA_HOME环境变量设置为指向C:\Program Files\Java\jdk1.7.0_02。
JAVA_HOME
C:\Program Files\Java\jdk1.7.0_02
我有同样的问题和复制C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar向C:\Program Files\Java\jre6\lib\ext为我工作。
C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar
C:\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 ”
安装Java SDK。
添加一个名为Java_主页的系统环境变量,其值为JDK位置。 转到控制面板\系统和安全\系统。高级系统设置,环境变量,系统变量,新..示例: 变量名称:Java_主页 变量值:C:\Program Files\Java\jdk1.7.0_21
关闭/重新打开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文件夹之后,我还是遇到了同样的问题。
..\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
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
/usr/local/java
$PATH
将决心
/usr/local/lib/tools.jar
这不是一个有效的位置。
为了解决这个问题,$JAVA_HOME变量应该指向这个位置/usr/local/java/jre(假设JDK路径是/usr/local/java)--实际上在JDK安装目录中有jre文件夹,它是每个JDK附带的。这个新设置将使Maven查看JRE目录,该目录是JDK的一部分:
/usr/local/java/jre
jre
$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.
C:\Program Files\Java\jdk1.7.0_79
PATH
问题是我在PATH变量中的JDK_路径之前有C:\ProgramData\Oracle\Java\javapath。我只是将我的JDK_路径移到Oracle路径之前,问题就解决了。
C:\ProgramData\Oracle\Java\javapath
你在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
为了解决这个问题,我简单地将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的解决方案:在计算机>高级系统设置>高级>环境变量。中,在系统变量中添加以下内容:
我已经下载了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.它工作得很好,很容易。在您的系统上重复这些步骤
根据您的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
E:\jdk 8\lib\tools.jar
如果有帮助的话,我的问题是我的PATH环境变量中有2个条目指向包含javaw可执行文件的位置。
我清理了变量以确保“%Java_HOME%\bin ”是引用包含我的Java可执行文件的位置的唯一条目。
当未设置环境变量Java_HOME或指向错误的目录时,会发生这种情况。通过运行以下命令,您可以看到Ant所具有的价值:
ant -diagnostics
并查找显示java.home的行。如果您安装了grep,则可以简单地运行:
java.home
grep
ant -diagnostics | grep java.home
要解决此问题,请将JAVA_HOME环境变量设置为JDK目录。虽然变量的设置在*nix和Windows之间略有不同,但其余部分在所有操作系统上都是一样的。因此,无论您使用的是Windows提供的GUI,还是set或setx命令,只要在调用ant之前设置该值即可(如果已全局设置该值,则在打开shell/终端窗口之前,该值必须存在)。
set
setx
ant
例如,在设置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。
org.codehaus.mojo:aspectj-maven-plugin:1.11
dev.aspectj:aspectj-maven-plugin:1.13.M3
最新版本的Java在lib文件夹中没有tools.jar.删除环境变量中的tools.jar条目,然后重试。