@@ -356,40 +356,45 @@ private static void assertMinimumCompilerVersion(JavaVersion minimumCompilerVers
356356 }
357357
358358 private RuntimeJava findRuntimeJavaHome () {
359+ Properties versionProperties = (Properties ) project .getExtensions ().getByName (VERSIONS_EXT );
360+ String bundledJdkVersion = versionProperties .getProperty ("bundled_jdk" );
361+ String bundledJdkMajorVersion = bundledJdkVersion .split ("[.+]" )[0 ];
362+
359363 String runtimeJavaProperty = System .getProperty ("runtime.java" );
360364 if (runtimeJavaProperty != null ) {
361365 if (runtimeJavaProperty .toLowerCase ().endsWith ("-pre" )) {
362366 // handle pre-release builds differently due to lack of support in Gradle toolchain service
363367 // we resolve them using JdkDownloadPlugin for now.
364- return resolvePreReleaseRuntimeJavaHome (runtimeJavaProperty );
368+ return resolvePreReleaseRuntimeJavaHome (runtimeJavaProperty , bundledJdkMajorVersion );
365369 } else {
366- return runtimeJavaHome (resolveJavaHomeFromToolChainService (runtimeJavaProperty ), true );
370+ return runtimeJavaHome (resolveJavaHomeFromToolChainService (runtimeJavaProperty ), true , bundledJdkMajorVersion );
367371 }
368372 }
369373 if (System .getenv ("RUNTIME_JAVA_HOME" ) != null ) {
370- return runtimeJavaHome (providers .provider (() -> new File (System .getenv ("RUNTIME_JAVA_HOME" ))), true );
374+ return runtimeJavaHome (providers .provider (() -> new File (System .getenv ("RUNTIME_JAVA_HOME" ))), true , bundledJdkVersion );
371375 }
372376 // fall back to tool chain if set.
373377 String env = System .getenv ("JAVA_TOOLCHAIN_HOME" );
374378 boolean explicitlySet = env != null ;
375379 Provider <File > javaHome = explicitlySet
376380 ? providers .provider (() -> new File (env ))
377- : resolveJavaHomeFromToolChainService (VersionProperties . getBundledJdkMajorVersion () );
378- return runtimeJavaHome (javaHome , explicitlySet );
381+ : resolveJavaHomeFromToolChainService (bundledJdkMajorVersion );
382+ return runtimeJavaHome (javaHome , explicitlySet , bundledJdkMajorVersion );
379383 }
380384
381- private RuntimeJava runtimeJavaHome (Provider <File > fileProvider , boolean explicitlySet ) {
382- return runtimeJavaHome (fileProvider , explicitlySet , null , null );
385+ private RuntimeJava runtimeJavaHome (Provider <File > fileProvider , boolean explicitlySet , String bundledJdkMajorVersion ) {
386+ return runtimeJavaHome (fileProvider , explicitlySet , null , null , bundledJdkMajorVersion );
383387 }
384388
385- private RuntimeJava runtimeJavaHome (Provider <File > fileProvider , boolean explicitlySet , String preReleasePostfix , Integer buildNumber ) {
389+ private RuntimeJava runtimeJavaHome (Provider <File > fileProvider , boolean explicitlySet , String preReleasePostfix , Integer buildNumber ,
390+ String bundledJdkMajorVersion ) {
386391 Provider <JavaVersion > javaVersion = fileProvider .map (
387392 javaHome -> determineJavaVersion (
388393 "runtime java.home" ,
389394 javaHome ,
390395 fileProvider .isPresent ()
391396 ? JavaVersion .toVersion (getResourceContents ("/minimumRuntimeVersion" ))
392- : JavaVersion .toVersion (VersionProperties . getBundledJdkMajorVersion () )
397+ : JavaVersion .toVersion (bundledJdkMajorVersion )
393398 )
394399 );
395400
@@ -399,7 +404,7 @@ private RuntimeJava runtimeJavaHome(Provider<File> fileProvider, boolean explici
399404 return new RuntimeJava (fileProvider , javaVersion , vendorDetails , explicitlySet , preReleasePostfix , buildNumber );
400405 }
401406
402- private RuntimeJava resolvePreReleaseRuntimeJavaHome (String runtimeJavaProperty ) {
407+ private RuntimeJava resolvePreReleaseRuntimeJavaHome (String runtimeJavaProperty , String bundledJdkMajorVersion ) {
403408 var major = JavaLanguageVersion .of (Integer .parseInt (runtimeJavaProperty .substring (0 , runtimeJavaProperty .length () - 4 )));
404409 Integer buildNumber = Integer .getInteger ("runtime.java.build" );
405410 var jdkbuild = buildNumber == null ? findLatestPreReleaseBuild (major ) : findPreReleaseBuild (major , buildNumber );
@@ -416,7 +421,7 @@ private RuntimeJava resolvePreReleaseRuntimeJavaHome(String runtimeJavaProperty)
416421 // We on purpose resolve this here eagerly to ensure we resolve the jdk configuration in the context of the root project.
417422 // If we keep this lazy we can not guarantee in which project context this is resolved which will fail the build.
418423 File file = new File (jdk .getJavaHomePath ().toString ());
419- return runtimeJavaHome (providers .provider (() -> file ), true , preReleaseType , jdkbuild .buildNumber ());
424+ return runtimeJavaHome (providers .provider (() -> file ), true , preReleaseType , jdkbuild .buildNumber (), bundledJdkMajorVersion );
420425 }
421426
422427 private Provider <File > resolveJavaHomeFromToolChainService (String version ) {
0 commit comments