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

问题描述 投票:12回答:15

我试图构建PlayN示例项目:

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

在每个pom.xml文件。我该如何解决?

编辑:

我已将profiles node添加到pom.xml,但错误仍然存​​在。我已经检查过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>
java maven playn
15个回答
20
投票

此工件始终作为“系统”依赖项处理。它永远不会存储在回购中。

有关详细信息,请参阅http://maven.apache.org/general.html#tools-jar-dependency

如果没有工具jar,并且你不在Mac上,那么当你的需求是JDK时,你正在尝试使用JRE。您无法通过复制文件将其中一个转换为另一个。


0
投票

我有同样的问题,这是因为路径中有多个tools.jar文件。

但问题是工作空间pom依赖性。我开始知道这一点,因为我在同一次日食中的其他工作空间工作正常。

我采取的步骤来调查和解决:

1)打开项目pom文件

2)去pom的Dependency Hierarchies部分

3)在右上角过滤器文本框中,输入名称tools.jar

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

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

6)选择排除文件。

然后重建项目。


0
投票

对我来说问题是我安装了JRE而不是JDK。我知道这很奇怪,因为JRE应该有效,但事实并非如此。与JDK相同的版本,它工作得很好。这是一个Linux盒子,没有IDE。


0
投票

我通过手动将我的jdk安装的/ lib上的tools.jar添加到Eclipse JRE来解决这个问题

窗口>首选项>已安装的JRE>编辑>添加外部jar>选择要添加的tools.jar


-1
投票

这个Apple Developer article说:

tools.jar不存在。通常位于此处的类包含在classes.jar中。依赖于tools.jar存在的脚本需要相应地重写。


-2
投票

我不得不改变你拥有的东西:

<systemPath>${java.home}/../lib/tools.jar</systemPath>

到显式路径,使用JDK而不是像Bmargulies那样的JRE说:

 <systemPath>C:/Program Files/Java/jdk1.6.0_24/lib/tools.jar</systemPath>

希望有所帮助。


-2
投票

在pom.xml文件中添加此依赖项。

<systemPath>属性中,您必须编写jdk lib路径。

<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> 

8
投票

在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


4
投票

您可能会在eclipse IDE上看到此错误的原因有很多

  1. Eclipse指向JRE而不是JDK
  2. JDK库不包含tools.jar

为此,您可能希望通过Preferences - > Java - > Installed JRE - >添加tools.jar(选择JDK,编辑并添加外部jar - >导航到tools.jar)

  1. 其他原因可能是这样 - >项目的父maven存储库在其他一些工件下有一个同名的jar。

您需要在eclipse中找到tools.jar - >依赖Heirarchy视图的pom.xml,一旦找到了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

通过指定vm eclipse使用来解决。另外,检查eclipse项目的构建路径是使用JDK,而不是JRE。

在构建路径上使用JDK,并在eclipse INI中显式设置JDK仍然不起作用,但是如果路径上的java是jre而不是jdk(windows路径,或linux / mac等价物)。

从命令行运行此命令以查看路径上的java:How do I find where JDK is installed on my windows machine?

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


2
投票

我也有这个问题,虽然java路径已经打开,但问题仍然存在。对我有用的修复是:

运行此命令(其中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. 检查tools.jar是否存在于pom.xml中的repo url中。
  2. 验证pom.xml中的依赖项。这可能是不正确的。我没有在http://search.maven.org/#browse%7C96611365找到任何罐子神器。

谢谢。


0
投票

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

-vm路径直到java.exe(如下图所示)

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

希望能帮助到你。


0
投票

这就是我使用Jboss Developer Studio 8.1.10解决这个问题的方法:

添加到您的jbdevstudio.ini文件位于:D:\Users\bertrand\jbdevstudio\studio这两行(在-vmargs之前):

-vm
C:\Program Files\Java\jdk1.7.0_79\bin
© www.soinside.com 2019 - 2024. All rights reserved.