Java 缺少工件com.sun:tools:jar

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

我一直在学习入门教程,但在使用Maven导入playn项目后,我陷入了困境。我正在使用运行在64位Windows7上的EclipseIndigo

所有导入的项目都有相同的错误:

Missing Artifact com.sun:tools:jar in all the pom.xml files.
在搜索了几个小时的论坛后,我尝试了:

安装最新的Java 1.6.029 将my
JAVA\u HOME
环境变量更改为指向
\program files\JAVA\jdk1.6\u 029
更改Eclipse Java首选项以使用JRE
jdk1.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`