vscode-java icon indicating copy to clipboard operation
vscode-java copied to clipboard

Java version support is quite misleading

Open mapio opened this issue 5 months ago • 4 comments

Here you say that this extension "Supports code from Java 1.8 to Java 25". But since it is based on https://github.com/eclipse-jdtls/eclipse.jdt.ls if you read the details there, it says: "Supports compiling projects from Java 1.8 through 24".

So it is not clear if using Java 25 is safe now. The "code" is supported, but not "compiling" it?

When using gradle configured for Java 25 (with the code obtained from gradle init) I can compile and execute tests, but the "Problems" panel is full of

[{
"resource": ".../bugrep/app/src/main/java/org/example/App.java",
"owner": "_generated_diagnostic_collection_name_#5",
"code": "4195414",
"severity": 4,
"message": "Compiling for Java version '25' is not supported yet. Using '24' instead",
"source": "Java",
"startLineNumber": 1,
"startColumn": 1,
"endLineNumber": 1,
"endColumn": 2,
"origin": "extHost1"
}]

This is quite confusing.

mapio avatar Sep 29 '25 08:09 mapio

Yes, the 2 phrases are meant to imply the same thing. Though we should probably change "code" to "compiling" to make it clear we aren't restricting our support to just runtime. For Gradle, are you using version >= 9.1.0. For using certain versions of Java, you need to be using a version of Gradle that supports that. See https://docs.gradle.org/current/userguide/compatibility.html .

rgrunber avatar Sep 29 '25 14:09 rgrunber

I am using Gradle 9.1.0 and the code compiles. But unless I switch to the insider version and the pre-released extensions, in the problems panel every class reports Compiling for Java version '25' is not supported yet. Using '24' instead.

I don't know the reason, but it is for sure very confusing for a new user (I'm teaching to a second year undergraduate CS class and when students see an alarm and an error are usually blocked).

mapio avatar Sep 30 '25 07:09 mapio

To make it more clear, this is a fresh start with

code . --profile "standard" --user-data-dir /tmp/BUGREP/profile-standard

Image

where you can see the problems reported, and the following is obtained with the insiders version

code-insiders . --profile "insiders" --user-data-dir /tmp/BUGREP/profile-insiders

Image

The code is what gradle init produces (I just changed System.out with IO to be sure to use a Java 25 feature).

bugrep.zip

mapio avatar Sep 30 '25 07:09 mapio

This is because Java 25 support (and https://github.com/eclipse-jdtls/eclipse.jdt.ls/pull/3536 ) is in the pre-release stream, but a formal release containing that support has not been done. There is a new release expected for the end of the week.

rgrunber avatar Sep 30 '25 12:09 rgrunber