2012-11-24 73 views
6

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

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

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

您认为可能是这个问题的根源?任何建议将不胜感激。

谢谢你们!

+0

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

回答

4

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

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

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

+0

确实,您是JDK文件夹的libs文件夹内的tools.jar。不幸的是,当我在eclipse中改变它时,它并没有解决问题。难道我做错了什么?我用java-6-openjdk。 –

+0

只是为了澄清事情,你什么时候遇到这个问题?它是一个Ant脚本失败吗?如果使用'-vm'开关指定eclipse的JDK而不是'eclipse.ini'文件中的JRE,它会有帮助吗?另外,[请看这里](http://www.gamefromscratch.com/post/2011/11/15/Telling-Eclipse-to-use-the-JDK-instead-of-JRE.aspx)。 – rlegendi

+0

它不是一个Ant脚本。我试着按照你提到的教程,但没有解决问题。不过,我尝试使用javac命令从终端编译类。在我明确指定javac中的classpath(-cp)参数指向/ usr/lib/jvm/java-6-openjdk/lib/*之前,它无法识别该包。这解决了问题。对我来说,即使将Installed JREs设置为java-6-openjdk,tools.jar也不会因为某些原因被Eclipse拾取。也许这将会给它更多的光芒。 –

0

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

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

或者

PATH="$PATH:$JAVA_HOME/bin" 

/home/<user>文件夹只要编辑或者.profile.bash_profile,你应该罚款。如果这些文件不存在,只需创建其中一个。

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