m2eclipse无法找到C:\Program Files\Java\jre6\..\lib\tools.jar。

5
我有一个问题,与我的eclipse中jdk/jre的使用有关。我知道这个问题已经被问答了许多次,我也花了很长时间去研究可能出了什么问题。但是我实际上没有找到任何信息,所以我想再问一遍。也许我漏掉了什么(如果有的话,希望不会太尴尬:)

我的问题是,当我运行mvn clean install时,会出现一个错误,说m2eclipse插件“无法定位到Java编译器:C:\Program Files\Java\jre6..\lib\tools.jar"。

首先我检查了eclipse中是否配置了正确的JRE。所以我切换到Window > Preferences > Java > Installed JREs,并检查选择的JRE是否是我jdk文件夹中的JRE。结果符合。

我检查了eclipse.ini,并添加了一个-vw标志。现在它看起来像:

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
 org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vm
"%JAVA_HOME%\bin\javaw.exe"
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m

%JAVA_HOME%被解析为C:\Program Files\Java\jdk1.6.0_24。由于它包含空格,我用引号括起来了vw路径。为了检查路径是否正确,我尝试了

C:\Windows\System32>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.6.0_24

这告诉我是正确的。我还尝试在启动eclipse时传递-vw选项。因此,启动eclipse的命令变为

D:\Programs\eclipse\eclipse.exe -vm "%JAVA_HOME%\bin\javaw.exe"

我也测试过使用%JAVA_HOME%符号和写完整路径的区别,但没有任何差异。

当我进入 Help > About Eclipse > Installation Details > Configuration 时,我得到的eclipse配置如下:

__wbp.gwt.useWebKit=true
awt.toolkit=sun.awt.windows.WToolkit
veclipse.application=org.eclipse.ui.ide.workbench
eclipse.buildId=M20120208-0800
eclipse.commands=-os
win32
-ws
win32
-arch
x86_64
-showsplash
-launcher
D:\Programs\eclipse\eclipse.exe
-name
Eclipse
--launcher.library
D:\Programs\eclipse\\plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110    502\eclipse_1406.dll
-startup
D:\Programs\eclipse\\plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.overrideVmargs
-exitdata
3e30_64
-product
org.eclipse.epp.package.java.product
-vm
C:\Program Files\Java\jdk1.6.0_24\bin\javaw.exe
eclipse.home.location=file:/D:/Programs/eclipse/
eclipse.launcher=D:\Programs\eclipse\eclipse.exe
eclipse.launcher.name=Eclipse
eclipse.p2.data.area=@config.dir/../p2/
eclipse.p2.profile=epp.package.java
eclipse.product=org.eclipse.epp.package.java.product
eclipse.startTime=1335643108722
eclipse.vm=C:\Program Files\Java\jdk1.6.0_24\bin\javaw.exe
eclipse.vmargs=-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m
-XX:MaxPermSize=256m
[...]

我还尝试使用位于%JAVA_HOME%\jre\bin\中的javaw.exe,但仍未更改任何内容。
有一件有点奇怪的事情是,如果我在Window> Preferences> Java> Installed JREs中删除对未包含在jdk中的jre的引用,我会收到一个错误,指出“指定的JRE安装不存在”。
有人知道我做错了什么吗?我认为我已经尝试了所有可能使其正常工作的方法,并且根据我找到的其他文章,我所做的是正确的。
顺便说一句:我进行了一些Maven“更新项目依赖项”和“更新依赖项”,这些都有效,因此我没有遇到任何错误。唯一的事情是,我没有重新启动计算机...

1
这是一个常见的错误,通常是由于未指向JDK引起的。您似乎已经做了一切正确的事情。您是否重新启动了Eclipse? - peter.murray.rust
是的,我已经重新启动了Eclipse好几次,但仍然没有改变... - mvieghofer
也许你应该看看这个链接:https://dev59.com/A3E95IYBdhLWcg3wn_j2 - ben_joseph
7个回答

7
  1. 打开Windows --> 已安装的JREs
  2. 选择已安装的JRE并单击编辑
  3. 将JRE主目录更改为PATH_TO_YOURJDK \ jre(先前应为PATH_TO_YOUJRE)
  4. 这对我有用

4
我找到了一个看起来能用的解决方法。虽然不是我期望的解决方案,但至少现在我可以使用maven了。
我在文件系统中与jdk和jre文件夹在同一级别上创建了一个新的文件夹。我把tools.jar文件从jdk复制到这个文件夹中,并将其命名为lib。
此外,我从普通的Java SE版Eclipse切换到适用于Java EE版(我使用EJB)。我们从大学获得的Eclipse版本,因此我不知道是否安装了我在我的(Java SE)Eclipse上错过安装的插件。
现在似乎可以工作了,但如果有人有更优雅的解决方案,请告诉我。

3
请参考这个答案。它建议您需要将路径设置为指向Java二进制文件目录。在我自己的情况下,已经设置了这个路径:
D:\workspace>echo %PATH%
C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Windows\system32;
C:\Windows;C:\Windows\System32\Wbem; ...
C:\Program Files\Java\jdk1.7.0_02\bin; ...

我在路径中已经有了JDK,所以那不是问题。 - mvieghofer

2

我注意到这已经是一个老问题了,但有一个更好的解决方案。首先,Eclipse要求提供“已安装的JRE”,但实际上你应该在这里提供JDK。就像Styler所提到的那样,不过不是单独导入tools.jar,而是在“已安装的JRE”中定义JDK。然后,它将从“基本java”中找到所有需要的内容,而无需额外导入到构建路径中(还应该不移动任何文件到或从JDK文件夹中,这可能会破坏软件的可移植性)。 此外,请注意,在选择“项目”>“Java编译器”时,有一个选项:“启用项目特定设置”。如果选择了此选项,则可能指定了与在“窗口”>“首选项”>“Java”>“已安装的JRE”中选择的默认JRE不同的JRE。


我碰巧注意到m.ali.khan.5049之前提供了基本相同的信息。我只是在写作时错过了那个。但我希望提供的额外信息可以使某人受益。 - Ville Myrskyneva

2

编辑:你提到你在构建路径中引用了JDK中的JRE。那么你是否注意到tools.jar并没有在这个JRE文件夹中?tools.jar仅包含在/lib文件夹中,而不是JDK内部的JRE。

这也一直困扰着我的项目。不知为何,Eclipse一直告诉我找不到tools.jar。我已经为此修复过几次,但今晚它又回来了。下面是我最终解决它的方法。

原因是你在Java Build Path的包含库中有JRE6。然而,tools.jar并没有包含在任何JRE中,你需要从你的JDK中导入tools.jar。

只需进入“属性” -> “Java Build path” -> “Libraries(选项卡)” -> “Add External JARs..”,然后选择/lib文件夹中的JDK tools.jar文件,问题就会被解决。如下图所示:

enter image description here


0

以下是帮助我解决问题的步骤列表。

步骤1:“属性”(窗口):

右键单击您的项目->属性->Java Build Path->JRE System Library(选择)->编辑。

步骤2:“JRE系统库”(窗口):

备用JRE(选择并选择JRE)->已安装的JRE(单击)。

步骤3:“首选项(过滤器)”(窗口)

在“已安装的JRE”下选择JRE->编辑(单击)

步骤4:“编辑JRE”(窗口)

单击“添加外部JAR”

步骤5:“JAR选择”(窗口)

选择“tools.jar”(在JDK->lib下)-->“打开”-->“完成”-->“确定”-->“完成”-->“确定”。

我们可以开始了!希望这有所帮助。


0
问题出在你的 JAVA_HOME 定义上。
C:\Windows\System32>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.6.0_24

应该是这样的

C:\Windows\System32>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.6.0_24\jre

JAVA_HOME变量应该指向Java运行时目录。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接