我正在使用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等工具。
# apt-get install default-jdk
,错误就会消失。 - Xavi MonteroJAVA_HOME
设置为jdk
内部的jre
而不是jdk
本身。 - ArtOfWarfare如果这对任何人仍然是一个问题,我对之前答案进行了一些澄清。我正在使用只安装了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命令之前生效。
PATH
中需要包含/bin
,而JAVA_HOME
中不需要包含/bin
。PATH
是系统环境变量之一,它指定了系统在哪些目录下查找可执行文件。而JAVA_HOME
是Java的安装目录,它通常被用于指定Java的根路径。 - Daniel W.我遇到了同样的问题,将 C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar
复制到 C:\Program Files\Java\jre6\lib\ext
就解决了。
corretto-1.8.0_282\lib\tools.jar
复制到 corretto-1.8.0_282\jre\lib\ext\tools.jar
,这解决了无法停止的 ClassNotFound
异常流。 - Roman Golyshev如果您已经安装了JDK 9.0.1,由于tools.jar已被弃用,您也将遇到这个问题。请参阅迁移文档。
将您的JAVA_HOME
环境变量设置为指向C:\Program Files\Java\jdk1.7.0_02
。
如果您使用的是Linux操作系统,您可以通过在系统上安装Java来解决此问题:
sudo apt-get install openjdk-7-jdk openjdk-7-jre
C:\Program Files\Java\jre6\lib
^^^^
它应该类似于:
C:\Program Files\Java\jdk1.6.0_24
$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 查看 JDK 中的 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。
./bin/kafka-console-consumer.sh
,但是当我被要求首先使用./gradlew jar -PscalaVersion=2.13.6
构建项目时,这个构建命令实际上为我生成了错误。 - stopanko