You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
The java builder should use the correct compiler compliance to build the project #1290
See the screenshot above, the PROBLEMS viewlet reports a warning on the project: "The compiler compliance specified is 13 but a JRE 1.8 is used". This means the classfile built by the ls is targeting to java 13, that would make it not able to be launched in JDK 8.
Besides, the debugger has fixed a bug microsoft/vscode-java-debug#753 about using the project's Java runtime to launch the application. The latest debugger would fail at this case.
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: EnvrionmentVariable has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 52.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:757)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
at java.lang.ClassLoader.loadClass(ClassLoader.java:419)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:352)
at java.lang.ClassLoader.loadClass(ClassLoader.java:352)
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)
Expected
The language server should generate the compatible .class files with the project's Java Runtime.
Have java.home to point to JDK 13, and launch the language server.
That causes Java LS to use the workspace Compiler Compliance level 13.
Your project inherits it and reports the warning.
You should configure your project by adding 26.environmentVariables/.settings/org.eclipse.jdt.core.prefs with following contents:
@snjeza Most of users don't have knowledge about the .settings. If project compiler compliance setting is undefined, how about auto assign a compiler compliance compatible with the project JRE_CONTAINER during eclipse project importer?
Thus, from the point of view of maven, it is no longer necessary to use maven.compiler.target/source, however, for VS Code it is still necessary to specify these properties so that it correctly interprets the version of Java used in the project.
Then, I solve my scenario using this two settings above.
Reacted by Daniel Henze, Giovanni Batista Carlos, Laís Lima Santos, Bianca Lins and Matteo Mortari
It does seem that VSCode-Java stuggles to properly detect and apply maven compiler settings from maven's pom.xml.
I've tried a number of configurations, and no matter what I do, the Java version defaults to 1.6 in org.eclipse.jdt.core.prefs. It can, however be manually configured, as pointed out earlier in this thread.
This matter is made worse because the vscode-java plugin will overwrite manually configured settings back to 1.6 when updating project configurations, making this supremely disruptive.
I also had to to set configurations manually in the .classpath file manually:
After updating to redhat.java 1.51.0, Maven compiler settings defined in pom.xml are no longer respected when a system-wide Java 1.8 installation is present.
Although the project is configured to use a newer Java version (e.g., via in the maven-compiler-plugin), VS Code resets the project runtime to Java 1.8 after cleaning or reloading the project.
I have tried various configuration options, but after performing a clean or reimport, the project compiler settings are always reverted to Java 1.8.
@p3t3r5 I can't reproduce the issue. Can you attach your pom.xml?(feel free to anonymize it)
Thank you for trying to reproduce the issue.
After analyzing our pom.xml, I noticed something that might be relevant.
I am not entirely sure why we have custom executions defined in the compiler plugin configuration, but after removing the executions section, the compiler settings are applied correctly after clean/recompile and the bytecode version is properly set to 17.
This did not cause any issues with redhat.java 1.50.0. The problem started after upgrading to 1.51.0.
Activity
snjeza commentedon Feb 20, 2020
@testforstephen
That causes Java LS to use the workspace Compiler Compliance level 13.
Your project inherits it and reports the warning.
You should configure your project by adding 26.environmentVariables/.settings/org.eclipse.jdt.core.prefs with following contents:
or use the following settings:
testforstephen commentedon Feb 21, 2020
@snjeza Most of users don't have knowledge about the
.settings. If project compiler compliance setting is undefined, how about auto assign a compiler compliance compatible with the project JRE_CONTAINER during eclipse project importer?snjeza commentedon Feb 21, 2020
@testforstephen I agree. @fbricon What do you think?
marlonpatrick commentedon Jul 24, 2020
I had the same problem when not using the properties:
As I'm experimenting with Java 14 the way to configure the java version in maven has changed to:
Thus, from the point of view of maven, it is no longer necessary to use maven.compiler.target/source, however, for VS Code it is still necessary to specify these properties so that it correctly interprets the version of Java used in the project.
Then, I solve my scenario using this two settings above.
lincolnthree commentedon Dec 19, 2020
Well hello there :)
It does seem that VSCode-Java stuggles to properly detect and apply maven compiler settings from maven's
pom.xml.I've tried a number of configurations, and no matter what I do, the Java version defaults to 1.6 in
org.eclipse.jdt.core.prefs. It can, however be manually configured, as pointed out earlier in this thread.This matter is made worse because the vscode-java plugin will overwrite manually configured settings back to 1.6 when updating project configurations, making this supremely disruptive.
I also had to to set configurations manually in the
.classpathfile manually:snjeza commentedon Dec 19, 2020
@lincolnthree could you attach your project or pom.xml?
lincolnthree commentedon Dec 19, 2020
Update. Looks like adding a newer version of the
maven-compiler-pluginand setting the following configuration has gotten things mostly working:lincolnthree commentedon Dec 19, 2020
The broken version was
maven-compiler-plugin:3.2.0lincolnthree commentedon Dec 19, 2020
Perhaps a warning could be issued if using an obsolete/incompatible version of the maven-compiler-plugin.
tarilabs commentedon Dec 16, 2022
I have the same problem on a project with mixed JDK 8 and JDK 11/17 for its module.
Seems solved by applying same solution as in #1290 (comment)
e.g.: not enough
but this works:
I am using
p3t3r5 commentedon Feb 16, 2026
After updating to redhat.java 1.51.0, Maven compiler settings defined in pom.xml are no longer respected when a system-wide Java 1.8 installation is present.
Although the project is configured to use a newer Java version (e.g., via in the maven-compiler-plugin), VS Code resets the project runtime to Java 1.8 after cleaning or reloading the project.
I have tried various configuration options, but after performing a clean or reimport, the project compiler settings are always reverted to Java 1.8.
VS Code Settings (settings.json)
Project Settings (pom.xml)
fbricon commentedon Feb 16, 2026
@p3t3r5 I can't reproduce the issue. Can you attach your pom.xml?(feel free to anonymize it)
p3t3r5 commentedon Feb 16, 2026
Thank you for trying to reproduce the issue.
After analyzing our pom.xml, I noticed something that might be relevant.
I am not entirely sure why we have custom executions defined in the compiler plugin configuration, but after removing the executions section, the compiler settings are applied correctly after clean/recompile and the bytecode version is properly set to 17.
This did not cause any issues with redhat.java 1.50.0. The problem started after upgrading to 1.51.0.
SOLVED
fbricon commentedon Feb 16, 2026
OK so then there's a good chance the regression was caused in upstream m2e by eclipse-m2e/m2e-core@cd5feb8. We'll need to investigate more.
In 1.50.0, the extension embeds org.eclipse.m2e.jdt_2.4.101.20250727-0653.jar
In 1.51.0, it embeds org.eclipse.m2e.jdt_2.5.0.20251112-1507.jar