Java Ant需要tools.jar,但找不到它
我正在为一个Java程序构建一个开发环境,在第一次尝试Ant构建脚本之后,我遇到了以下错误:Java Ant需要tools.jar,但找不到它,java,ant,tools.jar,Java,Ant,Tools.jar,我正在为一个Java程序构建一个开发环境,在第一次尝试Ant构建脚本之后,我遇到了以下错误: Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-6-openjdk/lib/tools.jar 虽然jdk的路径是正确的,但tools.jar实际上并不存在。它真的应该在那里吗?还是我的配置/安装出错了?它在我的机器上。我正在WindowsXPSP3上运行Sun JDK 1.6.021 你确定你有JDK吗?您是否
Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-6-openjdk/lib/tools.jar
虽然jdk的路径是正确的,但tools.jar实际上并不存在。它真的应该在那里吗?还是我的配置/安装出错了?它在我的机器上。我正在WindowsXPSP3上运行Sun JDK 1.6.021 你确定你有JDK吗?您是否可能只有JRE?请尝试以下方法: %sudo apt get安装sun-java6-jdk %sudo更新替代方案——配置java 选择包含路径的选项 /usr/lib/jvm/java-6-sun/jre/bin/java 在ubuntu 10.4上为我工作 您也可以尝试将JAVA_放在家中,如下所示: %sudo export JAVA_HOME=$(readlink-f/usr/bin/javac | sed“s:/bin/javac::”)
看起来您可以在/usr/lib/jvm/Java-6-openjdk中安装Java,但只能安装JRE,不能安装JDK。这为我解决了这个问题:
在Ubuntu上安装openjdk-6-jdk我只需要安装jdk
sudo apt get安装openjdk-7-jdk
..并且您始终可以使用
$ sudo apt-cache search openjdk | grep ^openjdk
从网站上我们可以看到
openjdk-7-jre包只包含Java运行时环境。如果要开发Java程序,请安装openjdk-7-jdk包
注意:在CentOS/RHEL上安装
java-1.x.0-openjdk
是不够的。另外,安装java-1.x.0-openjdk-devel
通过解压缩安装jdk-6u45-linux-x64.bin(从oracle.com站点)不会产生tools.jar。我猜该文件是由“makejpkg”脚本创建的。一旦我这样做了,并安装了生成的.deb文件,一切都很好。
我真的很讨厌甲骨文的律师。在Debian上,在使用apt get install Ant安装Ant之后,我在运行它时遇到了相同的错误:
无法找到tools.jar。预计可以在/usr/lib/jvm/java-6-openjdk-amd64/lib/tools.jar中找到它
事实上,在/usr/lib
的任何地方都没有提到任何工具.jar,尽管/usr/lib/jvm/java-6-openjdk-amd64
本身确实存在
根据上面的搜索,java-6-openjdk-amd64/lib/tools.jar
似乎是openjdk-6-jdk
的一部分,它确实不是用ant安装的(因为它只被标记为建议的())
apt get install openjdk-6-jdk
即使安装了jdk,也需要重定向JAVA\u HOME指向它
下面是一个奇怪的技巧,您可以在.profile中使用它来正确设置JAVA HOME,无论您使用的是哪种JAVA:
export JAVA_HOME=$(dirname $(dirname $(readlink -e /usr/bin/java)))
# Test for jdk installed above jre
if [ -x $JAVA_HOME/../bin/java ]; then export JAVA_HOME=$(dirname $JAVA_HOME); fi
在Ubuntu上,我通过安装软件包解决了这个问题
openjdk-7-jre-lib
之后出现了tools.jar
(我知道这是一篇老文章,但发表评论是希望它能对像我今天这样潜伏着寻找答案的人有所帮助。)看起来你已经安装了JRE only Java。看吧。你有什么操作系统?操作系统是Ubuntu。起初我只安装了JRE,然后安装了JDK。它们可能配置错误:)可能与我的jdk和jre都有重复。但那个特定的目录被下载并提取为jdk,这让我假设它是jdk lol。更具体地说,将它添加到.bashrcexport JAVA_HOME=/usr/bin
,更具体地说,如果您运行的是调用Ant构建的构建脚本,您可能需要在~/.bashrc
中实际设置导出
。我发现,在运行一个特定的build.sh
之前在终端中执行该操作并不能解决问题。我还设置了export JAVA_HOME=/usr/lib/jvm/JAVA-7-openjdk-amd64
,而不仅仅是/usr/
JAVA_HOME
应该是JDK的安装目录,因为Ant(我认为)会查看JAVA_HOME/bin
和JAVA_HOME/lib
。这怎么可能是公认的答案?就其本身而言,这甚至不是一个答案。我只是认为smae是@Heathunnicutt,似乎无论我去哪里都能找到这个问题的答案,我都会遇到“你必须只安装JRE”,我知道我已经/usr/lib/jvm/java-11-openjdk-amd64/
,所以wtfAndroid还没有被移植到java 7:/谢谢@sobi3ch这解决了我的问题。不知道是谁否决了你,但我对你的Ubuntu 14.04 LTS正确答案投了赞成票。你还需要将JAVA_HOME重定向到jdk而不是jre。同样适用于JAVA 8:sudo apt get install openjdk-8-jdk
这在Ubuntu中不是一个bug吗?ant
包不应该依赖于JDK吗?谢谢,我想知道为什么作为java开发工具包的JDK需要额外的devel包……即使你的答案真的很有用,我相信可以通过添加一些解释来改进它。点击链接了解更多信息
apt install defalut-jdk # this doesn't contain some file, like tools.jar...
apt install openjdk-8-jdk # this contains all files.