RFR: 8347831: Re-examine version check when cross linking [v4]

Alan Bateman alanb at openjdk.org
Tue Nov 11 10:04:13 UTC 2025


On Mon, 10 Nov 2025 20:44:34 GMT, Henry Jen <henryjen at openjdk.org> wrote:

>> This PR include build changes from @magicus and jlink change to verify the build signature.
>> 
>> Tested with local builds for MacOS and Linux as below shows that cross linking with same build is working while linking with different build failed with error message.
>> 
>> ❯ export JAVA_HOME=./build/macosx-x86_64-server-fastdebug/images/jdk-bundle/jdk-26.jdk/Contents/Home
>>                                                                                                                                                                  
>> ❯ java --version
>> openjdk 26-internal 2026-03-17
>> OpenJDK Runtime Environment (fastdebug build 26-internal-adhoc.hjen.JDK-8347831)
>> OpenJDK 64-Bit Server VM (fastdebug build 26-internal-adhoc.hjen.JDK-8347831, mixed mode, sharing)
>>                                                                                                                                                                  
>> ❯ jlink --version                                                                       
>> 26-internal
>>                                                                                                                                                                  
>> ❯ jlink --module-path ./build/linux-x86_64-server-release/images/jdk/jmods --add-modules java.base --output linux                                                                                                                                        
>>                                                                                                                                                                  
>> ❯ jlink --add-modules java.base --output macos
>>                                                             
>> ❯ jlink --module-path ~/linux/jdk-25.0.1/jmods --add-modules java.base --output linux25    
>> Error: jlink build N/A-26-internal-adhoc.hjen.JDK-8347831-2026-03-17 does not match target java.base build N/A
>>                                                                                                                                                                  
>> ❯ jlink --module-path /Library/Java/JavaVirtualMachines/jdk-25.jdk/Contents/Home/jmods --add-modules java.base --output macos25 
>> Error: jlink build N/A-26-internal-adhoc.hjen.JDK-8347831-2026-03-17 does not match target java.base build N/A
>
> Henry Jen has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Refactoring to clarify version checking cases

src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java line 589:

> 587:     }
> 588: 
> 589:     private static String getJlinkRuntimeVersion() {

Maybe rename to getCurrentRuntimeVersion as that makes it clearer what t his method returns.

src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java line 625:

> 623:         throw new IllegalArgumentException(taskHelper.getMessage("err.jlink.version.mismatch",
> 624:                 currentRelease,
> 625:                 targetRelease));

Would it be possible to paste in the error that the jlink user will see? (assuming jdk.debug is not set). I just want to be sure that the IllegalArgumentException isn't shown to the user.

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

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


More information about the core-libs-dev mailing list