8

I have followed this thread

now when i try to build using maven plugin installed i am getting following error. goal i executed was clean -X install

Unable to locate the Javac Compiler in:
  C:\Program Files\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.
-> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project trojantime: Compilation failure
Unable to locate the Javac Compiler in:
  C:\Program Files\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.

    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:581)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:324)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:247)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:104)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:427)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:157)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:121)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
Unable to locate the Javac Compiler in:
  C:\Program Files\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.

    at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:516)
    at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:105)
    at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:577)
    ... 14 more
[ERROR] 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

in Installed JRE from preferences it is JRE set and

here is the snapshot of about>installation>configuration>

*** Platform Details:

*** System properties:
awt.toolkit=sun.awt.windows.WToolkit
com.sun.management.jmxremote=
eclipse.application=org.eclipse.ui.ide.workbench
eclipse.commands=-os
win32
-ws
win32
-arch
x86
-showsplash
D:\eclipse VT preconfigured\eclipse\\plugins\org.eclipse.platform_3.3.202.v201002111343\splash.bmp
-launcher
D:\eclipse VT preconfigured\eclipse\eclipse.exe
-name
Eclipse
--launcher.library
D:\eclipse VT preconfigured\eclipse\plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519\eclipse_1206.dll
-startup
D:\eclipse VT preconfigured\eclipse\plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
-showlocation
-product
org.eclipse.epp.package.jee.product
-vm
c:\Program Files\Java\jdk1.6.0_04\jre\bin\client\jvm.dll
eclipse.home.location=file:/D:/eclipse VT preconfigured/eclipse/
eclipse.launcher=D:\eclipse VT preconfigured\eclipse\eclipse.exe
eclipse.p2.data.area=@config.dir/../p2/
eclipse.p2.profile=epp.package.jee
eclipse.product=org.eclipse.epp.package.jee.product
eclipse.startTime=1279882656890
eclipse.vm=c:\Program Files\Java\jdk1.6.0_04\jre\bin\client\jvm.dll
eclipse.vmargs=-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx740m
-Xss4m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:CompileThreshold=5
-XX:MaxGCPauseMillis=10
-XX:MaxHeapFreeRatio=70
-XX:+UseConcMarkSweepGC
-XX:+CMSIncrementalMode
-XX:+CMSIncrementalPacing
-Dcom.sun.management.jmxremote
-Djava.class.path=D:\eclipse VT preconfigured\eclipse\plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
file.encoding=Cp1252
file.encoding.pkg=sun.io
file.separator=\
java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment
java.awt.printerjob=sun.awt.windows.WPrinterJob
java.class.path=D:\eclipse VT preconfigured\eclipse\plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar
java.class.version=50.0
java.endorsed.dirs=c:\Program Files\Java\jdk1.6.0_04\jre\lib\endorsed
java.ext.dirs=c:\Program Files\Java\jdk1.6.0_04\jre\lib\ext;C:\WINDOWS\Sun\Java\lib\ext
java.home=c:\Program Files\Java\jdk1.6.0_04\jre
java.io.tmpdir=C:\DOCUME~1\argus\LOCALS~1\Temp\
java.library.path=D:\eclipse VT preconfigured\eclipse;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;c:/Program Files/Java/jdk1.6.0_04/jre/bin/client;c:/Program Files/Java/jdk1.6.0_04/jre/bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\TortoiseSVN\bin;C:\Program Files\QuickTime\QTSystem\;C:\Program Files\Java\jdk1.6.0_04\bin;C:\Program Files\MySQL\MySQL Server 5.1\bin;C:\Documents and Settings\argus\My Documents\apache-ant-1.7.1-bin\apache-ant-1.7.1\bin;C:\Documents and Settings\argus\My Documents\apache-maven-2.0.10\bin;C:\Documents and Settings\argus\My Documents\groovy-binary-1.7.3\groovy-1.7.3\bin;C:\Documents and Settings\argus\My Documents\patch-2.5.9-7-bin\bin
java.rmi.server.randomIDs=true
java.runtime.name=Java(TM) SE Runtime Environment
java.runtime.version=1.6.0_04-b12
java.specification.name=Java Platform API Specification
java.specification.vendor=Sun Microsystems Inc.
java.specification.version=1.6
java.vendor=Sun Microsystems Inc.
java.vendor.url=http://java.sun.com/
java.vendor.url.bug=http://java.sun.com/cgi-bin/bugreport.cgi
java.version=1.6.0_04
java.vm.info=mixed mode
java.vm.name=Java HotSpot(TM) Client VM
java.vm.specification.name=Java Virtual Machine Specification
java.vm.specification.vendor=Sun Microsystems Inc.
java.vm.specification.version=1.0
java.vm.vendor=Sun Microsystems Inc.
java.vm.version=10.0-b19
line.separator=
.
.
.
Community
  • 1
  • 1
jmj
  • 237,923
  • 42
  • 401
  • 438
  • adding JDK in Installed JRE solved this Thanks Vineet – jmj Jul 23 '10 at 11:36
  • Yes, it was the installed JRE. The runtime configuration from eclipse.ini refers to jvm.dll from the JDK, so that turned out fine. – Vineet Reynolds Jul 23 '10 at 11:46
  • I believe adding the JDK is precisely what I had answered you in your previous comment of http://stackoverflow.com/questions/1410511/eclipse-jvm-configuration/1410524#1410524, linking to http://stackoverflow.com/questions/1431531/how-is-the-eclipse-jdk-setting-affecting-the-systems-jdk-setting/1431554#1431554 – VonC Jul 23 '10 at 12:48
  • I think you will find answer here! http://stackoverflow.com/questions/5163021/how-to-resolve-this-maven-issue –  Jun 12 '12 at 12:01

8 Answers8

14

It appears that Eclipse is still referring to a JRE instead of a JDK. Also, the default runtime in Eclipse (found in the "Installed Runtimes" page of the Preferences dialog) might be a JRE.

I've noticed that this sometimes occurs due to multiple VM configurations being obtained, with the first or the last being applied. You can confirm whether this is the case (in Helios), by going to the About page of Eclipse, and then viewing the Configuration tab in Installation Details. Usually the culprit turns out to be a missing new line in eclipse.ini.

Vineet Reynolds
  • 76,006
  • 17
  • 150
  • 174
3

Perhaps you are reusing a "Run configuration" you did when the JRE was set up outside the JDK. Create a new "Run Configuration", making sure that the tab is indicated Java JDK.

Herbert
  • 31
  • 1
1

Try setting JAVA_HOME to JDK and not to JRE ?

Tushar Tarkas
  • 1,592
  • 13
  • 25
1

When you created your Maven project with Eclipse, maybe the text file encoding of your project's properties and the project.build.sourceEncoding in your pom.xml were not the same. If that's the case, then when you built the project, you'd get the error

"Unable to locate the Javac Compiler in:..."

For example, my text file encoding was GBK, and my project.build.sourceEncoding was UTF-8. I just modified my text file encoding to UTF-8, and everything was OK!

Pops
  • 30,199
  • 37
  • 136
  • 151
z8888q
  • 17
  • 3
0

If all the environments are fine and you are still getting build errors then the final approach is to set JAVA_HOME as JDK 1.5 or above. Then build the project from the command prompt. The build should be successful.

Leigh
  • 28,765
  • 10
  • 55
  • 103
0

I had also this kind of problems.

In my case it turned out that JAVA_HOME was defined for my user only while PATH was set for the system and maven plugin used default JRE instead of JDK. So make sure that JAVA_HOME and PATH are in the same scope (I put both variables for system and added JAVA_HOME as the first part in PATH).

Hope it helps someone.

matali
  • 186
  • 1
  • 10
0

Blockquote

TO CONVERT JRE TO JDK:

->Goto windows ->Preferences ->type as installed JRE's in the left top searchbox ->click installed JRE's ->select add from the right dialogBox ->click standard vm ->select the directory for "JREHOME" and do the following "C:\ProgramFiles\java\jdk1.8.0_131" ->then type as jdk1.8.0_131 "JRE NAME" ->click finish.

0

Note the format of the -vm option - it is important to be exact:

The -vm option and its value (the path) must be on separate lines. The value must be the full absolute path to the Java executable, not just to the Java home directory. The -vm option must occur before the -vmargs option, since everything after -vmargs is passed directly to the JVM.

Dominik
  • 1,703
  • 6
  • 26
  • 46