Eclipse: JRE System Library in Java Build Path reset
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:
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.
Use the
pluginManagenent
to turn off themaven-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>
Related videos on Youtube
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, 2022Comments
-
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:
Unfortunately, this can only be fixed temporary (until the next eclipse restart):
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 over 10 yearsChange 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 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 about 10 years@RAM: I update my post with some details about my current (working) versions, hopefully that helps.
-
FuryFart about 10 yearsThe 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 almost 10 yearsSame problem as stackoverflow.com/questions/22696067/… ;)
-
Jens Piegsa over 10 yearsThanks 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.PluginExecutionFilter.match(PluginExecutionFilter.java:337)
... -
René Link over 10 yearsHmm, that was not what I expected. I will take a look at it later or tomorrow.
-
René Link over 10 yearsI 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 over 10 yearsThanks for coming back to this. Now, the pom file editor shows the error
Cannot parse lifecycle mapping metadata for maven project
. :-/ -
René Link over 10 years@JensPiegsa The parse exception you have is caused by the
goals
andversionRange
tag. I updated my answer. But if thelifecycleMappingMetadata
is correct than m2e will update the execution environment again. Thus it does not work to use thelifecycleMappingMetadate
to turn it off. So there is only one option left, nr. 1 as I proposed. Hope that helps you anyway. -
Jens Piegsa over 10 yearsWell, 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.