Java 缺少工件com.sun:tools:jar
我一直在学习入门教程,但在使用Maven导入playn项目后,我陷入了困境。我正在使用运行在64位Windows7上的EclipseIndigo 所有导入的项目都有相同的错误:Java 缺少工件com.sun:tools:jar,java,maven,playn,Java,Maven,Playn,我一直在学习入门教程,但在使用Maven导入playn项目后,我陷入了困境。我正在使用运行在64位Windows7上的EclipseIndigo 所有导入的项目都有相同的错误: Missing Artifact com.sun:tools:jar in all the pom.xml files. 在搜索了几个小时的论坛后,我尝试了: 安装最新的Java 1.6.029 将myJAVA\u HOME环境变量更改为指向\program files\JAVA\jdk1.6\u 029 更改Ecli
Missing Artifact com.sun:tools:jar in all the pom.xml files.
在搜索了几个小时的论坛后,我尝试了:
安装最新的Java 1.6.029
将myJAVA\u HOME
环境变量更改为指向\program files\JAVA\jdk1.6\u 029
更改Eclipse Java首选项以使用JREjdk1.6_029
我真的很想尝试一下playn,但是为什么有一些帖子我似乎找不到解决方案的一致答案。有人说Sun从64位jdk中删除了一些内容,有人说您必须编辑xml文件,许多人说您必须更改JAVA\u主页
,还有人说您必须更改Eclipse的VM选项
任何关于清理的帮助都将不胜感激,并且可能对许多人有用,因为我在这里没有特别奇怪的设置
(编辑)
下面是第一个项目中的pom.xml。Eclipse在行中标记错误,该行表示:
4.0.0
com.googlecode.playn
playn项目
1.1-快照
playnandroid
playnandroid
罐子
com.googlecode.playn
playn核心
${project.version}
com.googlecode.playn
playn java
${project.version}
com.google.android
安卓
${android.version}
假如
朱尼特
朱尼特
4.8.1
测试
src
我遇到了同样的问题,解决这个问题的方法是将tools.jar
的依赖位置添加到pom.xml
中。像这样:
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar</systemPath>
</dependency>
com.sun
工具
1.6
系统
C:\ProgramFiles\Java\jdk1.6.0\U 29\lib\tools.jar
确保将
更改为tools.jar文件所在的位置。在POM文件的“有效POM”选项卡中,我看到以下派生路径:
C:\ProgramFiles\Java\jre6/./lib/tools.jar
我认为它在Windows中不是一个有效的路径。我尝试在jre6/lib文件夹和Java/lib中复制tools.jar,但没有成功
值“C:\Program Files\Java\jre6”来自注册表
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_30
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6
并将JavaHome密钥设置为jdk JRE的安装位置。然后所有的编译器错误都消失了
重新安装JDK并没有修复它。设置JAVA_HOME或JAVA.HOME系统环境变量没有帮助
我看到的另一种选择是在每个pom xml文件中添加具有正确路径的依赖项,但是playn示例有很多文件,必须编辑这些文件是一件非常痛苦的事情
这是有效的POM结果,显示了错误的路径
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jre6/../lib/tools.jar</systemPath>
<optional>true</optional>
</dependency>
com.sun
工具
1.6
系统
C:\ProgramFiles\Java\jre6/。/lib/tools.jar
真的
将${java.home}/./lib/tools.jar的相对位置更改为绝对路径
C:\ProgramFiles\Java\jdk1.6.0\u 29\lib\tools.jar的
您只需在playn/pom.xml
中更改它
现在对于playn示例,Vladiator是正确的,因为pom文件太多,无法更改 我刚刚发布了关于同一个问题以及我是如何解决它的,但我也将粘贴(并扩展)到这里,因为它似乎更相关
在Windows7中使用Eclipse时,我也遇到了同样的问题,即使我从Eclipse设置中的JRE列表中删除了JRE,而JDK就在那里
我最后不得不做的事情(正如您在问题中提到的)是修改用于启动Eclipse的快捷方式的命令行,以便向其中添加-vm参数,如下所示:
-vm "T:\Program Files\Java\jdk1.6.0_26\bin"
当然,您可以将其调整为指向JDK安装的bin目录。这会导致Eclipse本身使用JDK而不是JRE运行,然后它能够正确地找到tools.jar
我相信这与Eclipse在未指定JRE时如何找到其默认JRE有关。我猜它倾向于选择JRE而不是JDK(为什么,我不知道),并选择它找到的第一个兼容的JRE。如果它像Vladiat0r的回答所建议的那样关闭Windows注册表项,它会首先查找HKLM\Software\JavaSoft\Java Runtime Environment
项,而不是HKLM\Software\JavaSoft\Java Development Kit
项,在我的例子中,为了获得jaxws库,我必须添加一个codehous插件。然而,maven pom不断询问关于tools jar文件的问题
我必须说,上述评论是正确的,您可以在pom文件中包含以下条目:
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar</systemPath>
</dependency>
com.sun
org.apache.struts
struts2型芯
${struts2.version}
工具
com.sun
他们建议为ToolJAR添加一个排除语句,这样就可以了。总结:您可以在依赖项中包含排除规则,避免出现tool.jar问题:
<exclusions>
<exclusion>
<artifactId>tools</artifactId>
<groupId>com.sun</groupId>
</exclusion>
</exclusions>
工具
com.sun
我在Windows7和Eclipse3.7上遇到了同样的问题
我设法通过启动来修复它
eclipse.exe-vm“D:\JDK6\bin”
您可以启动cmd并像那样启动eclipse,也可以编辑快捷方式并在“目标部分”中添加-vm“D:\JDK6\bin”作为参数
作为旁注,我还尝试将-vm“D:\JDK6\bin”添加到eclipse.ini中,但没有成功。
而且添加JRE6将不起作用,因为它的“lib”目录中不包含tools.jar。只有JDK能做到这一点。我和Windows 7也是如此。我最后在eclipse.ini中添加了两行代码:
-vm
C:\Program Files\Java\jdk1.6.0_35\bin
我尝试在那里使用%JAVA\u HOME%
,但没有成功。在pom.xml文件中添加此依赖关系。希望这有帮助。
在
-vm
C:\Program Files\Java\jdk1.6.0_35\bin
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.4.2</version>
<scope>system</scope>
<systemPath>C:/Program Files/Java/jdk1.6.0_30/lib/tools.jar</systemPath>
</dependency>
openFile
-vm (Your Java Home JDK here)
-vm
C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe
<profiles>
<profile>
<id>default-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
<file>
<exists>${java.home}/../lib/tools.jar</exists>
</file>
</activation>
<properties>
<toolsjar>${java.home}/../lib/tools.jar</toolsjar>
</properties>
</profile>
<profile>
<id>osx_profile</id>
<activation>
<activeByDefault>false</activeByDefault>
<os>
<family>mac</family>
</os>
</activation>
<properties>
<toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
</properties>
</profile>
</profiles>
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6.0</version>
<scope>system</scope>
<systemPath>${toolsjar}</systemPath>
</dependency>
</dependencies>
<dependency>
<groupId>com.github.markusbernhardt</groupId>
<artifactId>robotframework-selenium2library-java</artifactId>
<version>1.4.0.7</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.github.markusbernhardt</groupId>
<artifactId>robotframework-selenium2library-java</artifactId>
<version>1.4.0.7</version>
<scope>test</scope>
<exclusions>
<exclusion>
<artifactId>tools</artifactId>
<groupId>com.sun</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>sun.jdk</groupId>
<artifactId>tools</artifactId>
<version>1.8</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jdk1.8.0_192\lib\tools.jar</systemPath>
</dependency>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jdk1.8.0_101\lib\tools.jar</systemPath>
</dependency>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6</version>
<scope>system</scope>
<systemPath>C:\Program Files\Java\jdk1.8.0_241\lib\tools.jar</systemPath>
</dependency>
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_261`