Maven build failed: "Unable to locate the Javac Compiler in: jre or jdk issue"

Viewed 176349

I have my JAVA_HOME set to:

C:\Program Files (x86)\Java\jdk1.6.0_18

After I run maven install, I get this message from Eclipse:

Reason:

Unable to locate the Javac Compiler in:
  C:\Program Files (x86)\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.

I'm certain that this is the tricky part

Please ensure you are using JDK 1.4 or above and not a JRE

When I run configuration it's set to JRE6. How do I change it to JDK 1.6 which I have already installed?

I even tried to modify the plugin:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <executable>C:\Program Files (x86)\Java\jdk1.6.0_18\bin</executable>
    </configuration>
</plugin>

Still I get the same error.

I use the Eclipse Maven plugin. How can I change from JRE to JDK in Eclipse?

32 Answers

You could try updating the JDK Eclipse is using, as follows:

Add and set the JRE in menu WindowPreferences...JavaInstalled JREs:

JRE type: Standard VM JRE
Name: jdk1.6.0_18
JRE home directory: C:\Program Files (x86)\Java\jdk1.6.0_18

If this is not the case, it's possible that the brackets and spaces in the JAVA_HOME path are causing issues. Try copying your JDK to a different location and updating your JAVA_HOME.

It sounds like Maven is using the JRE, not the JDK. Perhaps you installed Maven before installing the JDK?

Check the settings files. There are three in total, system, user, and project. It's most likely in the installation configuration ($M2_HOME/conf/settings.xml) or, possibly, the per-user configuration (${user.dir}/.m2/settings.xml).

I would guess that the location of the compiler is defined in a POM for the compiler plugin to be in the JRE location displayed, instead of the JDK location you have JAVA_HOME pointing to.

If you set the JAVA_HOME, and the problem persists try the following.

(I had the same problem, on a fresh installed PC.)

Assuming you are using Eclipse.

  • Open WindowPreferencesJavaInstalled jre's. Remove all you have there, add the desired you want to use (JDK, no JRE!)
  • In the same window open maven - installations, add the Maven installation you downloaded and extracted somewhere. (Do not use the embedded Maven installation. It has some known bugs.)

That's all. Your project will not suffer from such problems.

I changed the configuration of maven-compiler-plugin to add executable and fork with value true.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
    <executable>C:\Program Files\Java\jdk1.6.0_18\bin\javac</executable>
</configuration>

It worked for me.

Related