On Fri, 7 Nov 2025 16:43:48 GMT, Henry Jen <[email protected]> wrote:

>> src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java line 600:
>> 
>>> 598:             ModuleReference target = finder.find("java.base").get();
>>> 599:             String currentRelease = 
>>> getReleaseInfo(current).orElseThrow(() ->
>>> 600:                 new IllegalArgumentException("Cannot find 
>>> release.txt"));
>> 
>> I assume this is an err.jlink.version.mismatch case too. The packaged 
>> version of java.base on the module path is missing the resource file so it 
>> must be an older version, hence a mismatch.
>
> This is for the current runtime of jlink, so this should never happen?

That's right. If getReleaseInfo(current) were to fail then it suggests a JDK 
build or other bug.

For the target runtime then finder.find("java.base") returning emptymeans the 
module path specified to jlink doesn't have java.base so this should be handled 
gracefully. With the current changes then it looks like it will fail up with 
NoSuchElementException, do I read this correctly?

If java.base is found on the module path but it doesn't contain the release 
file then the updated code to use "N/A" is okay as it feeds into the error 
message that jlink will print.

So I think the changes are nearly there. 

I've added the "csr" label to the PR as this change will need a CSR. There may 
be cases today that are cross linking successfully (they got lucky) but they 
will fail with the change due to the stricter check.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/28155#discussion_r2506343704

Reply via email to