【问题标题】:JRE system library missing tools.jarJRE 系统库缺少 tools.jar
【发布时间】:2012-11-24 18:24:54
【问题描述】:

我使用的是 Ubuntu 12.04(LTS)。在我的 Eclipse 项目中,我需要使用 com.sun.tools.attach 包。但是,我的 JRE 系统库不包含包含该包的 tools.jar 文件。

我尝试为 Java 6 和 7 安装不同的 JRE 和 JDK。我注意到其中一些在他们的 libs 文件夹中有提到的 jar 文件,但是在选择 JRE 时 Eclipse 仍然无法将它包含在我的类路径中。引用 tools.jar 直接解决了问题,但由于这是一个共享项目,我不允许修改类路径,因此这对我来说不是一个可行的解决方案。

我的朋友正在使用具有相同版本的 Eclipse 和默认 JRE 的 MAC,并且没有这个问题。我们发现,对他来说,tools.jar 是 classes.jar 的一部分,而我的设置并非如此(我没有 classes.jar)。

你认为这个问题的根源是什么?

【问题讨论】:

  • Tools.jar 是 JDK 的一部分,而不是 JRE。

标签: eclipse classpath java


【解决方案1】:

问题在于 JDK 包含 tools.jar 文件(JRE 都不包含)。

解决这个问题很容易,您必须指定默认运行时环境以用于项目或整个工作区。将其更改为任何已安装的 JDK。

最简单的方法可能是进入 Window --> Preferences --> Java --> Installed JREs,然后选择 JDK 而不是 JRE。所有项目默认使用此设置。

【讨论】:

  • 确实是JDK文件夹的libs文件夹内的tools.jar。不幸的是,当我在 Eclipse 中更改它时,它并没有解决问题。难道我做错了什么?我使用了 java-6-openjdk。
  • 只是为了澄清一下,你什么时候遇到这个问题?是失败的 Ant 脚本吗?如果您使用-vm 开关在eclipse.ini 文件中指定要使用的JDK 而不是JRE,是否有帮助?另外,take a look here.
  • 它不是 Ant 脚本。我尝试按照您提到的教程进行操作,但这并没有解决问题。但是,我尝试使用 javac 命令从终端编译类。在我明确指定 javac 中的类路径 (-cp) 参数指向 /usr/lib/jvm/java-6-openjdk/lib/* 之前,它无法识别包。这解决了问题。对我来说,即使我将 Installed JREs 设置设置为 java-6-openjdk,Eclipse 似乎也不会出于某种原因拾取 tools.jar。也许这会给它带来更多的启示……
  • 我也刚刚意识到,当我在终端中执行 java -version 时,我得到“1.7.0_09”,而当我执行 javac -version 时,我得到“1.6.0_24”。这会导致稍后当我尝试运行代码时出现问题,我在 main 中得到一个异常,例如:“线程中的异常“main”java.lang.NoClassDefFoundError:NameOfClass(错误名称:path_to_class/NameOfClass)”
  • 现在阐明了这个问题:Eclipse 是由 JRE 而不是 JDK 启动的,这给您带来了麻烦(正如您所指出的,编译器不在您的类路径中,需要tools.jar 文件)。
【解决方案2】:

我在 Ubuntu 12.10 上遇到了完全相同的问题,在我的情况下,我设法通过将当前 Java 二进制文件夹的引用添加到我的 PATH 变量来解决它。

PATH="$PATH:/usr/local/java/current/bin"

或者

PATH="$PATH:$JAVA_HOME/bin"

只需在您的/home/<user> 文件夹中编辑.profile.bash_profile,就可以了。如果这些文件不存在,只需创建其中一个。

注意:确保您使用的是 JDK 而不是 JRE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-27
    • 1970-01-01
    • 2012-04-13
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    相关资源
    最近更新 更多