我正在用Java构建一个项目.
我有这个错误:
Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar
Run Code Online (Sandbox Code Playgroud)
我已经安装了JDK和文件夹:C:\Program Files\Java\jre6\lib在我的系统中,但文件tools.jar不存在.
duf*_*ymo 181
是的,您已经下载并安装了Java Runtime Environment(JRE)而不是Java Development Kit(JDK).后者有tools.jar,java.exe,javac.exe等.
Bla*_*ell 86
如果对任何人来说这仍然是一个问题,我对之前的答案有一点澄清.我使用只安装了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
Run Code Online (Sandbox Code Playgroud)
当我运行ant时,它抱怨没有在jre7子目录下找到tools.jar.直到我set "JAVA_HOME=C:\Program Files\Java\jdk1.7.0_04"错误消失.
小智 28
我有同样的问题,并 复制 C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar 到 C:\Program Files\Java\jre6\lib\ext 为我工作
Zor*_*ayr 10
将JAVA_HOME环境变量设置为指向C:\Program Files\Java\jdk1.7.0_02.
mim*_*lea 10
如果你在Linux中,你可以通过在系统上安装java来解决这个问题:
sudo apt-get install openjdk-7-jdk openjdk-7-jre
Run Code Online (Sandbox Code Playgroud)
不,根据您的目录结构,您已经安装了JRE,而不是JDK.有区别.
C:\Program Files\Java\jre6\lib
^^^^
Run Code Online (Sandbox Code Playgroud)
它应该是这样的:
C:\Program Files\Java\jdk1.6.0_24
Run Code Online (Sandbox Code Playgroud)
小智 6
不要花太多时间寻找tools.jar.如果你得到这样的错误,不要生气.
如果您已经拥有java JDK 1.5,请转到您的lib文件夹,该文件夹tools.jar应该可用.将其复制并粘贴到您的ant bin文件夹中,然后尝试使用该命令ant -version.
你应该看到预期的结果.
我在 Linux 机器上遇到了同样的问题。一开始我很沮丧,因为我已经安装了JDK和JRE。我同时使用 1.6、1.7 和 1.8 版本,并且我尝试了很多替代方案以确保一切设置正确。
这个问题解决起来非常愚蠢,但却违反直觉。当我使用正确的 JDK 时,我注意到 maven 抱怨的工具 jar 的路径 - 它期望它是
$JAVA_HOME\..\lib\tools.jar
Run Code Online (Sandbox Code Playgroud)
该$JAVA_HOME变量直接指向我的jdk文件夹(/usr/local/java这也是正确的$PATH条目和替代符号链接)。它实际上是在java目录之外搜索lib文件夹,因为:
$JAVA_HOME\..\lib\tools.jar
Run Code Online (Sandbox Code Playgroud)
将决心
/usr/local/lib/tools.jar
Run Code Online (Sandbox Code Playgroud)
这不是一个有效的位置。
为了解决这个问题,$JAVA_HOME变量应该指向这个位置/usr/local/java/jre(假设 JDK 路径是/usr/local/java)——jre每个 JDK 附带的 JDK 安装目录中实际上有一个文件夹。这个新设置将使 maven 查看 JRE 目录,它是 JDK 的一部分:
$JAVA_HOME\..\lib\tools
Run Code Online (Sandbox Code Playgroud)
现在决定
/usr/local/java/jre/../lib/tools.jar
Run Code Online (Sandbox Code Playgroud)
最后到
/usr/local/java/lib/tools.jar
Run Code Online (Sandbox Code Playgroud)
这才是tools.jar真正的所在。
因此,即使您确实使用 JDK 而不是 JRE,$JAVA_HOME 也必须指向 JRE。请记住,操作系统替代方案仍应引用 JDK。