Issue #9239 reports that automatic Java selection fails for a Minecraft 1.21.4
instance, while manually selecting Java 21 succeeds. The supplied PCL log shows
that PCL selects Java 25 from the official runtime directory because it is first
in the configured Java list and satisfies the current [21.0, +infinity)
requirement.
Although the issue description says no mods are installed, the supplied launch
script and crash log show Fabric Loader 0.16.12. The crash is caused by its
Mixin/ASM stack attempting to read a Java 25 class (class-file major version
69), which it does not support.
GetJavaRequirement in Plain Craft Launcher 2/Modules/Minecraft/ModJava.vb
assigns Minecraft 1.20.5+ a lower Java bound of 21.For Fabric Loader versions older than 0.17.0, add an exclusive Java 25 upper
bound (< 25.0) during requirement analysis. This makes Java 21--24 eligible
for Minecraft 1.21.4 while preventing the known incompatible Java 25 runtime
from being selected. Fabric Loader 0.17.0 and later retains the existing open
upper bound so compatible newer loaders may use Java 25.
The boundary is based on the loader-published dependencies: Fabric Loader 0.16.12 uses ASM 9.7.1, while 0.17.0 upgrades to ASM 9.8 with Java 25 class-file support.
The constraint is applied only in automatic selection. Explicit Java choices and user-defined Java ranges remain authoritative, preserving the existing escape hatches for advanced users.
[21.0, 25.0).