boolean (JpsJavaCompilerConfiguration config, int compilerVersion, int chunkSdkVersion, int targetPlatformVersion) { if (!config.useReleaseOption()) { return false; } // --release option is supported in java9+ and higher if (compilerVersion >= 9 && chunkSdkVersion > 0 && targetPlatformVersion > 0) { if (chunkSdkVersion < 9) { // target sdk is set explicitly and differs from compiler SDK, so for consistency we should link against it return false; } // chunkSdkVersion >= 9, so we have no rt.jar anymore and '-release' is the only cross-compilation option available // Only specify '--release' when cross-compilation is indeed really required. // Otherwise '--release' may not be compatible with other compilation options, e.g. exporting a package from system module return compilerVersion != targetPlatformVersion; } return false; }