Eclipse: JRE System Library in Java Build Path reset

55,827

The maven eclipse plugin (m2e) selects a java execution environment depending on the <source> and <target> properties for the maven compiler plugin.

The problem is that there is neither a 1.8 execution environment available in Kepler nor the m2e maven compiler connector can map it yet.

Thus I see two solutions until it is supported in Kepler and m2e:

  1. Let maven change the environment to 1.4 and map your 1.8 JDK to the execution environment J2SE-1.4. Then your project will use the correct JDK. But then all projects that depend on 1.4 will use the 1.8 JDK of course.

  2. Use the pluginManagenent to turn off the maven-compiler-plugin lifecycle handling. This should prevent the m2e plugin from updating the execution environment and you can set it manually.

    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                     <lifecycleMappingMetadata>
                           <pluginExecutions>
                                 <pluginExecution>
                                     <pluginExecutionFilter>
                                           <groupId>org.apache.maven.plugins</groupId>
                                           <artifactId>maven-compiler-plugin</artifactId>
                                           <versionRange>[1.0.0,)</versionRange>
                                         <goals>
                                             <goal>compile</goal>
                                         </goals>
                                     </pluginExecutionFilter>
                                     <action>
                                          <ignore />
                                     </action>
                                 </pluginExecution>
                           </pluginExecutions>
                     </lifecycleMappingMetadata>
               </configuration>
           </plugin>
        </plugins>
    </pluginManagement>
    
Share:
55,827

Related videos on Youtube

Jens Piegsa
Author by

Jens Piegsa

Current project: The NAKO Health Study If you start too small, you may extend. If you start too large, you will fail.

Updated on July 14, 2022

Comments

  • Jens Piegsa
    Jens Piegsa almost 2 years

    For developing a JavaFX application I'm using a 4.3.1 snapshot of eclipse together with JDK 8 build b116. In my workspace projects the JRE library inclusion in the build path get resetted back to Java 1.4 all the time:

    the problem

    Unfortunately, this can only be fixed temporary (until the next eclipse restart):

    the temporary solution

    In the build section of my pom files I have:

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <debug>true</debug>
            <debuglevel>source,lines</debuglevel>
        </configuration>
    </plugin>
    

    I'd appreciate a less volatile solution.

    [UPDATE] The issue seems to be fixed with the current versions of

    • Java 8 (1.8.0-ea-b121),
    • Maven (3.1.1/1.5.0.20131218-0705),
    • m2e (1.5.0.20131218-1208) together with the
    • JDT beta patch [Update site].
    • Karthik Prasad
      Karthik Prasad over 10 years
      Change the java version in project facet to 1.8. May be you can try to run the eclipse to use java 1.8( I don't think this will have any impact). Pom.xml dependency looks fine
    • FuryFart
      FuryFart about 10 years
      @Jens have you been able to resolve this issue? I am in the same situation now with Eclipse 4.3, Maven 3.2.1 and JDK 1.8.0b129.
    • Jens Piegsa
      Jens Piegsa about 10 years
      @RAM: I update my post with some details about my current (working) versions, hopefully that helps.
    • FuryFart
      FuryFart about 10 years
      The Install Instructions from wiki.eclipse.org/JDT/Eclipse_Java_8_Support_%28BETA%29 seem to work. I can use Java 8 features but the Execution Environment of the Maven project is still listed as J2SE-1.4.
    • Lenny
      Lenny almost 10 years
  • Jens Piegsa
    Jens Piegsa over 10 years
    Thanks for the comprehensive answer. It looks like the second option solves the problem. It just worries me a little, that Mavens Updating Project now throws an java.lang.NullPointerException at org.eclipse.m2e.core.internal.lifecyclemapping.model.PluginE‌​xecutionFilter.match‌​(PluginExecutionFilt‌​er.java:337) ...
  • René Link
    René Link over 10 years
    Hmm, that was not what I expected. I will take a look at it later or tomorrow.
  • René Link
    René Link over 10 years
    I also got the NPE and updated my answer. The NPE should be gone now and you should still be able to set the execution environment manually.
  • Jens Piegsa
    Jens Piegsa over 10 years
    Thanks for coming back to this. Now, the pom file editor shows the error Cannot parse lifecycle mapping metadata for maven project. :-/
  • René Link
    René Link over 10 years
    @JensPiegsa The parse exception you have is caused by the goals and versionRange tag. I updated my answer. But if the lifecycleMappingMetadata is correct than m2e will update the execution environment again. Thus it does not work to use the lifecycleMappingMetadate to turn it off. So there is only one option left, nr. 1 as I proposed. Hope that helps you anyway.
  • Jens Piegsa
    Jens Piegsa over 10 years
    Well, with option 1, I have to correct the compliance level manually. Thanks for the effort, though. Let us be patient until Eclipse, Maven and m2e officially support version 8.