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

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.


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>

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

Tags:

Java

Maven