构建错误:缺少 com.sun:tools:jar:1.6 工件。

16

尝试构建PlayN示例项目时,我遇到了以下问题:

Missing artifact com.sun:tools:jar:1.6  pom.xml /playn-cute line 6  Maven Dependency Problem

在每个pom.xml文件中都会出现这个错误。我该如何解决它?

编辑:

我已经在pom.xml中添加了profiles节点,但错误仍然存在。我已检查tools.jar是否存在,但实际上不存在。因此,我将tools.jar添加到lib文件夹中,但错误仍然存在。

完整的pom.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<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.0.1</version>
    </parent>

    <artifactId>playn-cute</artifactId>
    <name>PlayN Cute Metaproject</name>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <playn.version>1.0.1</playn.version>
    </properties>

    <modules>
        <module>core</module>
        <module>java</module>
        <module>html</module>
        <!-- <module>flash</module> -->
        <module>android</module>
    </modules>

    <profiles>
        <profile>
            <id>default-tools.jar</id>
            <activation>
                <property>
                    <name>java.vendor</name>
                    <value>Sun Microsystems Inc.</value>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.sun</groupId>
                    <artifactId>tools</artifactId>
                    <version>1.6</version>
                    <scope>system</scope>
                    <systemPath>${java.home}/../lib/tools.jar</systemPath>
                </dependency>
            </dependencies>
        </profile>
    </profiles>
</project>

你使用的是哪个操作系统?你的javac命令的确切路径是什么?你安装tools.jar的确切路径是什么?你安装了Java SDK还是只安装了Java JRE?听起来你只安装了后者,但你需要前者。 - samskivert
请检查我在类似的问题中的答案:我认为这与用于tools.jar的路径有关。 - Chris
我找到的快速解决方法是将JRE指向JDK文件夹中可用的那一个。 - Naveen Raj
这个回答解决了你的问题吗?缺失依赖 com.sun:tools:jar - Olivier
16个回答

23

谢谢bmargulies。请查看我的问题编辑,我已经添加了进一步的进展。 - MichaelS
2
我使用的是Mac,但它如何让我的生活更美好呢? - Stan Sokolov
你有注意到这个日期吗?Mac JDK 的形状曾经是不同的。 - bmargulies
1
链接已失效 :( - turbanoff
@turbanoff 链接已修复。 - Dinei

9
在使用Windows 7中的Eclipse时,我遇到了相同的问题,即使在Eclipse设置中将JRE从JRE列表中移除,只留下JDK。由于您的问题没有说明您是使用命令行Maven还是Eclipse,所以我想分享一下我在Eclipse中解决该问题的方法。
最终我需要做的是修改启动Eclipse的快捷方式的命令行,像这样添加-vm参数:
-vm "T:\Program Files\Java\jdk1.6.0_26\bin"

当然,你需要将其调整为指向你自己的JDK安装目录下的bin文件夹。这样做会使Eclipse本身使用JDK而不是JRE来运行,从而能够正确地找到tools.jar


2
这对我在Eclipse中的Maven项目起作用,但为了获得完整的效果,我必须从上下文菜单中执行Maven -> 更新项目。 - mister270

5

在Eclipse IDE中,出现此错误的原因有很多。

  1. Eclipse指向的是JRE而不是JDK
  2. JDK库中没有tools.jar文件

对于这种情况,您可能需要通过以下步骤自行添加tools.jar:首选项 -> Java -> 已安装的JRE ->(选择JDK,编辑并添加外部JAR文件 -> 导航到tools.jar)

  1. 其他原因可能是 -> 项目的父Maven存储库中存在另一个工厂的相同名称的JAR文件。

您需要通过Eclipse中pom.xml的“Dependency Hierarchy”查找tools.jar文件,一旦找到,就可以在该处添加排除。

如下所示:

<groupId>com.parent.project</groupId>
    <artifactId>parent-project-dependencies-pom</artifactId>
    <version>${dependencies.version}</version>
        <exclusions>
            <exclusion>
                <groupId>com.sun</groupId>
                <artifactId>tools</artifactId>
            </exclusion>
         </exclusions>

3

我正在Ubuntu上进行测试。我对Java工具不是很熟悉。安装JDK解决了我的问题。

aptitude install openjdk-6-jdk

2

您不需要将依赖项添加到POM中。我在eclipse中遇到了这个问题,因为eclipse在JRE而不是JDK中运行。

参见此处的相同问题:Missing artifact com.sun:tools:jar

通过指定eclipse使用的vm来解决。还要检查您的eclipse项目的构建路径是否正在使用JDK而不是JRE。

将JDK添加到构建路径,并在eclipse INI中明确设置JDK仍无法正常工作,但是如果路径上的java是jre而不是jdk(Windows路径或Linux/Mac等效),则可以使用。

从命令行运行以下命令以查看路径上的java: 如何找到安装在Windows机器上的JDK位置?

如果它是JRE,则应将其更改为JDK并重新启动您的IDE。


2

我也遇到了这个问题,虽然java_path是正确的,但问题仍然存在。对我起作用的解决方法是:

运行此命令(Dfile指向你的tools.jar):

mvn install:install-file -DgroupId=com.sun -DartifactId=tools -Dversion=1.4.2 -Dpackaging=jar -Dfile="C:\Program Files\Java\jdk1.6.0_26\lib\tools.jar"

然后在主要的pom.xml文件中添加对依赖项的引用:

<dependency>
    <groupId>com.sun</groupId>
    <artifactId>tools</artifactId>
    <version>1.4.2</version>
</dependency>

1

以下是一些可以帮助您的提示:

  1. 检查 pom.xml 中 repo url 是否存在 tools.jar。
  2. 验证 pom.xml 中的依赖项。它可能不正确。我在 http://search.maven.org/#browse%7C96611365 没有找到任何 jar artifact。

谢谢。


0
这是我使用Jboss Developer Studio 8.1.10解决此问题的方法:
在位于D:\Users\bertrand\jbdevstudio\studiojbdevstudio.ini文件中添加以下两行(在-vmargs之前):
-vm
C:\Program Files\Java\jdk1.7.0_79\bin

0

这是我是如何解决它的。 请将以下行粘贴到您的eclipse.ini文件中。

-vm Java.exe文件的路径(如下所示)

-vm C:/Program Files/Java/jdk1.7.0_60/bin/java

希望能有所帮助。


0

我曾经遇到过同样的问题,原因是路径中存在多个tools.jar文件。

但这个问题只出现在工作空间的pom依赖上。我知道这一点是因为我在同一个eclipse中的其他工作空间都能正常工作。

我采取了以下步骤来进行调查和解决:

1)打开项目pom文件

2)进入pom中的“Dependency Hierarchies”部分

3)在右上角的筛选文本框中输入名称tools.jar

4)这将显示tools.jar文件的依赖层次结构。

5)在右侧的“Resolved Section”中,选择tools.jar文件并右键单击该jar文件。

6)选择排除该文件。

然后重新构建项目。


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