Jeff
Jeff

Reputation: 1591

In the pom.xml for a java project, I get missing artifact jdk.tools:jdk.tools:jar:1.6 error

I think I know how to solve the problem except: I don't know where in the pom the specific version is referred to (I do not see it explicitly) and the solution I have seen is to add this dependency:

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

But I would like to use com.oracle and the jdk directory on Windows is jdk1.8.

So is there a way to make the pom "want" the version of tools that I actually have on my machine?

Upvotes: 35

Views: 121702

Answers (9)

Guillermo L&#243;pez
Guillermo L&#243;pez

Reputation: 21

Add this code to the dependencies pom.xml:

<dependency>
   <groupId>org.apache.solr</groupId>
   <artifactId>solr-core</artifactId>
   <version>4.5.1</version>
   <exclusions>
      <exclusion>
         <artifactId>jdk.tools</artifactId>
         <groupId>jdk.tools</groupId>
      </exclusion>
   </exclusions>
</dependency>

Upvotes: 2

Liam Deacon
Liam Deacon

Reputation: 894

For the benefit of those who Google this error when encountering it in 2021 (many years after the OP... yikes) and are using a modern openjdk distribution, it is possible to exclude jdk.tools from individual dependencies like so:

<dependency>
    <groupId>org.apache.systemds</groupId>
    <artifactId>systemds</artifactId>
    <version>2.1.0</version>
    <exclusions>
        <exclusion>
            <artifactId>jdk.tools</artifactId>
            <groupId>jdk.tools</groupId>
        </exclusion>
    </exclusions>
</dependency>

Admittedly I'm not sure of the general consequences of this, but it is useful in the situations I've needed it (e.g. when running mvn dependency:copy-dependencies)

Upvotes: 1

Govinda Hinduja
Govinda Hinduja

Reputation: 29

you merely need to add the dependency to tools.jar in your pom.xml file.

<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.7.0_05</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>

If the error persists, change the path to tools.jar to an absolute path as shown below:

<systemPath>C:/Program Files/Java/jdk1.8.0_65/lib/tools.jar</systemPath>

Upvotes: 3

Mithun B
Mithun B

Reputation: 21

I figured out the solution to this problem in eclipse.

In Eclipse,

Navigate to Window -> Preferences

On the left hand pane, expand Java and you will find the "Installed JREs" entry

Select that and you should be able to see the JRE entry that is referring to the JRE folder rather than the JDK folder.

Select the entry to edit it and then redirect it to the JDK folder and click on Apply.

This solved my problem right away.

Upvotes: 2

Gautam
Gautam

Reputation: 1107

As I figured the best way to tackle this is to add the following configuration to your eclipse.ini to make sure it uses the jdk copy of javaw while running eclipse instead of the JRE copy which solves the problem and seems to be the correct approach to fix the issue

-vm
C:/Program Files/Java/jdk1.8.0_73/bin/javaw.exe

Upvotes: 4

Vikram Deshmukh
Vikram Deshmukh

Reputation: 15646

For anyone who stumbles over this issue in the future, read on for a more elegant solution:

Reason

This issue crops up in one of the two scenarios:

  1. You do not have JDK installed and configured; or

  2. You've both JDK and JRE installed and JRE is getting precedence over the JDK path.

Solution

As explained in this link by the team at 'Hadoop in the real world', you merely need to add the dependency to tools.jar in your pom.xml file.

<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.7.0_05</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>

If the error persists, then just change the path to tools.jar to an absolute path as shown below:

<systemPath>C:/Program Files/Java/jdk1.8.0_65/lib/tools.jar</systemPath>

Upvotes: 29

smita
smita

Reputation: 1

<dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <version>1.7</version>
    <scope>system</scope>
    <systemPath>C:/jdk1.7.0_51/lib/tools.jar</systemPath>
</dependency>

Upvotes: 0

Crystark
Crystark

Reputation: 4216

I finally tackled this the proper way.

This happens when eclipse is launched with the JRE instead of the JDK as tools.jar isn't in the JRE. Based on that assertion, try installing the JDK. If it's already installed, check in your Path that you have the JDK path and not the JRE path.

Be careful, the latest versions of java seems to add in the Path the following directory: C:\ProgramData\Oracle\Java\javapath. It contains shortcuts that may link to the JRE. You'll want to remove that and add in the link to your JDK bin folder. (e.g. C:\Program Files\Java\jdk1.8.0_66\bin)

Note that you may need to restart your computer for the changes in the Path to be effective for the eclipse launch (I don't really understand why I had to but I did).

Also note that Java updates will probably re-add the javapath to your PATH. So you may want not to use auto-updates but instead manually update your JDK and adapt your path after the install. It's a bit heavy but does the work.

Upvotes: 46

dosyfier
dosyfier

Reputation: 328

You can use the "java.home" environment variable :

<dependency>
   <groupId>com.sun</groupId>
   <artifactId>tools</artifactId>
   <version>1.6</version>
   <scope>system</scope>
   <systemPath>${java.home}/lib/tools.jar</systemPath>
</dependency>

Please have a look to : https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#System_Dependencies

Upvotes: 2

Related Questions