缺失的构件com.sun:tools:jar。

115

我一直在按照入门教程进行学习,但是在使用Maven导入playn项目后遇到了困难。我的操作系统是64位Windows 7,使用的IDE是Eclipse Indigo。

导入的所有项目都出现同样的错误:

Missing Artifact com.sun:tools:jar in all the pom.xml files.

在搜索论坛几个小时后,我已经尝试过:

安装最新的Java 1.6.029 将我的JAVA_HOME环境变量更改为指向\program files\Java\jdk1.6_029 更改我的Eclipse Java首选项以使用JRE jdk1.6_029

我真的很想尝试playn,但是为什么有一些帖子似乎找不到问题的共识答案。有些人说Sun从64位jdk中删除了某些东西,还有人说您必须编辑xml文件,许多人说您必须更改您的JAVA_HOME,还有人说您必须更改Eclipse的VM选项。

如果能够澄清这一点并可能对许多人有用,则将不胜感激,因为我在这里没有特别奇怪的设置。

(编辑) 以下是第一个项目中的pom.xml。 Eclipse在标有错误的行中标记了错误:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.googlecode.playn</groupId>
    <artifactId>playn-project</artifactId>
    <version>1.1-SNAPSHOT</version>
  </parent>

  <artifactId>playn-android</artifactId>
  <name>PlayN Android</name>
  <packaging>jar</packaging>

  <repositories>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>com.googlecode.playn</groupId>
      <artifactId>playn-core</artifactId>
      <version>${project.version}</version>
    </dependency>

    <!-- needed because Android uses the same JSON code as playn-java;
         that should be factored into a library shared by both backends -->
    <dependency>
      <groupId>com.googlecode.playn</groupId>
      <artifactId>playn-java</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>com.google.android</groupId>
      <artifactId>android</artifactId>
      <version>${android.version}</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <sourceDirectory>src</sourceDirectory>
  </build>
</project>

你在命令行中运行Maven时是否遇到相同的错误? - Raghuram
我添加了pom.xml文件。很抱歉我不知道如何使用命令行来处理maven。 - boldinventions
由于这是一个常见问题,您能接受一个对您有效的答案吗? - Roy Truelove
一个快速的解决方案是将JRE指向JDK文件夹中可用的那个。 - Naveen Raj
在使用Eclipse Neon(4.6.3)运行机器人框架测试用例时,我遇到了类似的问题。在“Window/Preferences/Java/Installed JRE's”下将JRE更改为JDK,这对我有用。正如上面正确指出的那样,JDK确实包含tools.jar。 - David
显示剩余2条评论
27个回答

0

我遇到了这个问题,结果发现Windows上的JBossDevStudio 9.1是一个32位程序。Eclipse和因此JBossDevStudio不能与错误类型的JVM一起工作。64位的Eclipse需要64位的JVM,32位的Eclipse需要32位的JVM。因此,将Eclipse配置为使用我安装的64位JDK运行并不起作用。

安装32位JDK并从中运行Eclipse解决了问题。

至少对于我的一个项目来说,我尝试在Eclipse项目属性中配置运行时JDK的另一个项目仍然无法正常工作。


0
在我的情况下,我是从Eclipse运行配置中执行Maven Build的。即使将默认的JRE配置更改为指向JDK安装文件夹,问题对我来说仍未得到解决。原因是Maven Build - Run Configuration中有一个JRE选项卡(请参见下面的图像)。它仍然指向我的JRE安装。我将其更改为指向JDK安装,然后运行了Maven Build。这次,它成功了。 输入图像描述

0

我相信这些本地补丁会起作用。但是它们很可能会导致下游部署问题。我只是下载了一个带有Java 11的新版本Eclipse,现在一切都正常工作。


0

另一种情况

  • JAVA_HOME 变量必须指向 Java 11+ 安装。
  • 旧项目使用 Maven。新项目使用 Gradle。
  • 旧的 Maven 项目使用 Java 8,如果我们使用 Java 9+,其中一些项目会因缺少 tools.jar 文件而出现错误。

解决方案

  • 编辑 mvn shell 脚本(Windows 上的 mvn.batmvn.cmd),并将 JAVA_HOME 设置为指向 JDK 8 安装。
  • 该脚本位于 Apache Maven 安装目录下的 /bin 目录中。
  • 设置变量的示例(Windows 脚本):
    @REM ==== START VALIDATION ====
    set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_161

0

将“首选项->Java->已安装的JRE”下的“已安装的JRE”更改为JDK主目录对我有用。

供参考-我正在使用JDK 1.8。


0

问题在于系统无法找到文件 tools.jar

因此,首先检查该文件是否在JDK安装目录中。

enter image description here

请按照其他人正确指出的方式,在 POM.xml 中进行以下条目输入。
<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> 

然后按照以下步骤来解决问题

1)右键单击您的项目

2)点击“Build Path”

根据下面的图片,选择工作区默认的JRE,然后点击完成。

enter image description here


-1

${java.home}/../lib/tools.jar的相对位置更改为C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar的绝对路径对我有效。

您只需要在playn/pom.xml中更改它。

现在对于playn-samples,Vladiator是正确的,那是太多要更改的pom文件。


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