即使设置了路径,当我运行 ant(在 RHEL 6.6 上)时,为什么仍会看到“无法找到 tools.jar。预计会在 ....”中找到它

a_s*_*sid 3 linux rhel path java environment-variables

我在其中创建了一个脚本/etc/profile.d并将其命名为jdk_home.sh. 内容jdk_home.sh如下:

#!/bin/sh
export JAVA_HOME=$(readlink -f /usr/bin/javac | sed "s:/bin/javac::")
export PATH=$JAVA_HOME/bin:$PATH 
Run Code Online (Sandbox Code Playgroud)

(我按照Stack Overflow 上这个问题的答案来设置 $JAVA_HOME)。

然后我source /etc/profile.d/jdk_home.sh在命令行上输入。之后,我打字echo $JAVA_HOME,它给了我以下输出:

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.131.x86_64
Run Code Online (Sandbox Code Playgroud)

输入后,echo $PATH我得到了这个输出:

/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.131.x86_64/bin:/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.131.x86_64/bin:/bin:/bin:/bin:/bin:/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/bin:/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121/bin:/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin:/root/bin:/bin:/usr/apache/apache-ant-1.9.9/bin:/bin:/bin:/bin:/bin:/bin:/bin
Run Code Online (Sandbox Code Playgroud)

然后,我在名为 的项目文件夹中打开了另一个终端dal。我放在build.xml那个文件夹里。我的build.xml有以下内容:

 <project name="Hello World Project" default="info">
<target name="info">
<echo>Hello World - Welcome to Apache Ant!</echo>
</target>
</project>
Run Code Online (Sandbox Code Playgroud)

我在命令行输入 ant :

[root@gksrv dal]# ant
Run Code Online (Sandbox Code Playgroud)

这产生了以下输出:

Unable to locate tools.jar. Expected to find it in /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.121-0.b13.el6_8.x86_64/lib/tools.jar
Buildfile: /root/Desktop/dal/build.xml

info:
     [echo] Hello World - Welcome to Apache Ant!

BUILD SUCCESSFUL
Total time: 0 seconds
Run Code Online (Sandbox Code Playgroud)

为什么我会看到tools.jar警告?路径不包含所需的信息吗?

a_s*_*sid 7

后来我发现它tools.jar不在jdk目录中。我运行了该命令yum install java-1.8.0-openjdk-devel并lib/tools.jar在 java 文件夹中可用。ant在此之后运行命令时,我没有收到相同的警告。

  • 为了将来在基于 yum 的系统上参考,每当您遇到“我需要知道要安装什么才能获取此文件”的问题时,您可以使用 `yum whatprovides &lt;path-to-file&gt;` 例如,在这种情况下:`yum whatprovides */tools.jar` 其中列出了提供该文件的所有包。这通常是一个很好的开始。 (3认同)