Requesting a Java 22 toolchain fails with a strange error
wolfs opened this issue · 4 comments
With the foojay convention plugin 0.7.0 and a simple Java lib requesting a 22
Java toolchain, the build fails with a strange error:
Failed to calculate the value of task ':lib:compileJava' property 'javaCompiler'.
> Unable to download toolchain matching the requirements ({languageVersion=22, vendor=any, implementation=vendor-specific}) from 'https://api.foojay.io/disco/v3.0/ids/f668dfc827666d293721a787022fb25b/redirect'.
> Can't determine filename for resource located at: https://api.foojay.io/disco/v3.0/ids/f668dfc827666d293721a787022fb25b/redirect
The downloaded JDK is actually mandrel-java17-22.3.4.0-Final
, that doesn't seem like a Java 22 at all. When requesting Java version 23, the build fails with a good error message:
Failed to calculate the value of task ':lib:compileJava' property 'javaCompiler'.
> Requesting vendor list failed: {"result":[],"message":"Requested version is not released yet."}
This may be a problem in the disco API.
The root cause here is that there is a mandrel
distribution that has a version 22
that is jdk_version
17. Perhaps we should only use an allowlist of distributions, instead of all values returned from the foojay API? It could be configurable in an extension if someone needs to change it.
Or, the API match code here could be updated to use jdk_version
all the time, since that works for everything and not just GraalVM.
If I open the URL (https://api.foojay.io/disco/v3.0/ids/f668dfc827666d293721a787022fb25b/redirect) on my machine (macOS arm64), it downloads liberica-vm-openjdk11
. Looking into the content, it says something like graalvm_f6c97b4e45_java11 22.3.4
.
I'm not 100% aware of the diferences between "normal" jdks and graalvm.
But it seems that the plugin requests wrongly a GraalVM distribution because there are 22 versions available (for graal? 🤔 ) but not for "normal" jdks?
Isn't Graal somewhat "special" and therefore should be exlcuded in case there is no vendor specified? 🤔
In this case, I guess, when requesting a 22 Java toolchain, the error would be the same as for version 23.
Because - if i see it correctly - there is no version 22 for "normal jdks" available yet.