Mopparthy Ravindranath
Mopparthy Ravindranath

Reputation: 3308

maven eclipse - Unsupported major.minor version 52.0

I am using apache maven 3.2.3 to compile my java project.

When I use the command line to launch the compile using

mvn clean compile

then it works perfectly.

But when I run maven build from eclipse (LUNA), it always fails with the below error:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile (default-compile) on project MSDPEx: Execution default-compile of goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-compiler-plugin:2.5.1:compile: java.lang.UnsupportedClassVersionError: com/sun/tools/javac/Main : Unsupported major.minor version 52.0
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>org.apache.maven.plugins:maven-compiler-plugin:2.5.1
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/home/rvnath/.m2/repository/org/apache/maven/plugins/maven-compiler-plugin/2.5.1/maven-compiler-plugin-2.5.1.jar
[ERROR] urls[1] = file:/home/rvnath/.m2/repository/org/codehaus/plexus/plexus-utils/3.0/plexus-utils-3.0.jar
[ERROR] urls[2] = file:/home/rvnath/.m2/repository/org/codehaus/plexus/plexus-compiler-api/1.9.1/plexus-compiler-api-1.9.1.jar
[ERROR] urls[3] = file:/home/rvnath/.m2/repository/org/codehaus/plexus/plexus-compiler-manager/1.9.1/plexus-compiler-manager-1.9.1.jar
[ERROR] urls[4] = file:/home/rvnath/.m2/repository/org/codehaus/plexus/plexus-compiler-javac/1.9.1/plexus-compiler-javac-1.9.1.jar
[ERROR] urls[5] = file:/home/rvnath/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
[ERROR] 
[ERROR] -----------------------------------------------------
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.

Is there a problem in configuration with eclipse and maven? If so, how do I solve this?

If it helps, my environment is the below:

OS:  Ubuntu 14.10
JDK: java version "1.7.0_75"
     OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~utopic1)
     OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)

Eclipse installed JRE's:  java-7-openjdk-amd64 (default)

Upvotes: 6

Views: 32981

Answers (4)

Adrian C
Adrian C

Reputation: 101

I forgot to declare maven-surefire in my Java 7 project's pom.xml, so it defaulted to use the Java 8 version in maven's runtime.

Adding surefire to the build section in the pom solved the problem.

<build>
    <plugins>
         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.12</version>
            <configuration>
                <argLine>-XX:-UseSplitVerifier</argLine>
                <skip>${maven.skip}</skip>
                <skipTests>${maven.skipTests}</skipTests>
             </configuration>
         </plugin>
    </plugins>
</build>

Upvotes: 0

George
George

Reputation: 6084

The above didn't work for me, but this did. Add to your pom.xml

<project ....>
    <properties>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
    </properties>
</project>

where 1.7 is the Java version you intend to use. This overwrites the maven compiler setting, so it's good to debug from here.

Upvotes: 1

khmarbaise
khmarbaise

Reputation: 97399

First. If you are working with Maven the truth is in the pom file and not in Eclipse. So you have to fix the problem in Maven and not in Eclipse.

First you have to update the maven-compiler-plugin to version 3.2 or 3.3. and configure it like this:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

You should check your build from command line and not from within eclipse. Furthermore you should be aware of the difference between using source, target option and JDK.

Upvotes: 4

Mopparthy Ravindranath
Mopparthy Ravindranath

Reputation: 3308

This problem was vexing me for the last 2...3 weeks.

This kind of question has been asked several times, and many answers. But posting my answer as well, so someone having this situation may benefit.

Finally I figured out that my system also had a jdk1.8 installed, and that the cmdline launch of maven was using this version, while the eclipse was using 1.7. So, I did the following:

  1. open Eclipse->Window->preferences->Installed JRE's
  2. click Add button, select the path to my jdk1.8, finish

Now I am able to compile the project, even though I do not know the precise reason, why it should fail to compile with jdk1.7.

Upvotes: 11

Related Questions