Build error: missing artifact com.sun:tools:jar:1.6

Trying to build PlayN sample projects I get:

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

On every pom.xml file. How do I resolve it?

Edit:

I've added the profiles node to the pom.xml, but the error remains. I've checked the tools.jar is actually exists, and it didn't. So I've added tools.jar to lib folder. And still the error remains.

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

Answers


This artifact is always handled as a 'system' dependency. It is never stored in a repo.

See http://maven.apache.org/general.html#tools-jar-dependency for the details.

if there is no tools jar, and you aren't on a Mac, you are trying to use a JRE when the requirement is a JDK. You can't turn one into the other by copying file.


I had the same issue when using Eclipse in Windows 7, even when I removed the JRE from the list of JREs in the Eclipse settings and just had the JDK there. Your question doesn't state if you're using command-line Maven, or Eclipse, so I thought I'd share what fixed it for me in Eclipse.

What I ended up having to do was modify the command-line for the shortcut I use to launch Eclipse to add the -vm argument to it like so:

-vm "T:\Program Files\Java\jdk1.6.0_26\bin"

Of course, you would adjust that to point to the bin directory of your JDK install. What this does is cause Eclipse itself to be running using the JDK instead of JRE, and then it's able to find the tools.jar properly.


There are many reasons you might see this error on your eclipse IDE

  1. Eclipse pointing to JRE rather than JDK
  2. JDK library not containing tools.jar

For this you might want to add tools.jar by yourself through Preferences -> Java -> Installed JRE -> (select JDK, edit and add external jars -> navigate to tools.jar)

  1. Other reason might be this -> the parent maven repository of your project have a jar with the same name under some other artifactory.

You need to locate tools.jar through -> Dependency Heirarchy view for pom.xml in eclipse and once you have located the jar you can add an exclusion there

like ->

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

I'm testing on Ubuntu. I'm not very familiar with Java tools. Installing JDK solved the issue for me.

aptitude install openjdk-6-jdk

You shouldn't need to add the dependency to your POM. I had this problem in eclipse and it was because eclipse was running in a JRE, not a JDK.

See this question here for the same issue: Missing artifact com.sun:tools:jar

Resolved by specifing the vm eclipse uses. Also check the build path for your eclipse project is using a JDK, not a JRE.

Having a JDK on the build path, and explictly setting a JDK in the eclipse INI still doesn't work however if the java on the path was a jre not a jdk (windows path, or linux/mac equivilent).

Run this from the command line to see what java on your path is: How do I find where JDK is installed on my windows machine?

If its a JRE you should change it to a JDK and relaunch your IDE.


I also had this problem, and although the java_path was ok, the problem persisted. The fix which worked for me was:

Run this command (where Dfile points to your 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"

Then in the main pom.xml add the reference to the dependency:

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

Some pointers that can help you:

  1. Check if the tools.jar is present in the repo url in pom.xml.
  2. Verify the dependency in pom.xml. It might be incorrect. I did not find any jar artifact at http://search.maven.org/#browse%7C96611365.

Thanks.


this is how I resolved it. please paste below lines into your eclipse.ini file.

-vm path till java.exe (as shown below)

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

hope it helps.


This is how I resolved this problem using Jboss Developer Studio 8.1.10:

Add to your jbdevstudio.ini file located in: D:\Users\bertrand\jbdevstudio\studio these two lines (before -vmargs):

-vm
C:\Program Files\Java\jdk1.7.0_79\bin

I had the same problem, it was because of multiple tools.jar files in the path.

But the problem was specific to work-space pom dependency. I came to know this, as my other work-spaces in the same eclipse are working fine.

Steps I have taken to investigate & solve:

1) Open project pom file

2) Go the Dependency Hierarchies section in pom

3) In the upper right corner filter text box, enter the name tools.jar

4) This will show the dependency hierarchy of the tools.jar file.

5) In the right hand side Resolved Section, select the tools.jar file and right click on the jar file.

6) select the exclusion of the file.

Then rebuild the project.


For me the issue was that I installed JRE but not JDK. I know it's weird as JRE should work but it does not. With JDK same version it works good. It's a linux box and no IDE.


I solved this by manually adding the tools.jar on my jdk installation's /lib to the Eclipse JRE

Window > Preferences > Installed JREs > Edit > Add external jars > select the tools.jar to add


This Apple Developer article states:

tools.jar does not exist. Classes usually located here are instead included in classes.jar. Scripts that rely on the existence of tools.jar need to be rewritten accordingly.


I had to change what you had:

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

to the explicit path, using the JDK not the JRE like bmargulies said:

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

Hope that helps.


Add this dependecy in pom.xml file.

In <systemPath> property you have to write your jdk lib path.

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

Need Your Help

The difference between Free Software and Open Source Software

open-source licensing

For quite a while, I thought that Free Software was Open Source Software. I've found out that this view is incorrect, and that Open Source Software is not necessarily Free Software. I honestly ca...

Error parsing XHTML: The content of elements must consist of well-formed character data or markup

javascript jsf jsf-2 xhtml facelets

As an extension of this question, I'm trying to insert Javascript to a &lt;h:commandButton /&gt;'s onclick property as action is already rendering an ajax table.