[2.0.x] fix: Honor JAVA_HOME in the Unix launcher (#9825)

Problem: The Unix launcher ignores JAVA_HOME and selects Java from PATH when JAVACMD is absent.

Solution: Check JAVA_HOME/bin/java before falling back to PATH while preserving explicit --java-home and JAVACMD precedence.

Fixes #9794
This commit is contained in:
Anatolii Kmetiuk
2026-10-01 23:26:17 -04:00
committed by Eugene Yokota
parent 67b5386332
commit f6e21bb78e
2 changed files with 7 additions and 0 deletions
@@ -186,6 +186,7 @@ trait ShellScriptUtil extends BasicTestSuite {
if (isWindows)
envVars("JAVACMD") = new File(javaBinDir, "java").getAbsolutePath()
else
envVars("JAVACMD") = new File(javaBinDir, "java").getAbsolutePath()
envVars("PATH") = javaBinDir + File.pathSeparator + path
val cmd = LauncherTestHelper.launcherCommand(testSbtScript.getAbsolutePath) ++ args
+6
View File
@@ -927,6 +927,12 @@ original_args=("$@")
sbt_file_opts=()
if [[ -f "$JAVACMD" ]]; then
java_cmd="$JAVACMD"
elif [[ -n "$JAVA_HOME" && -f "$JAVA_HOME/bin/java" ]]; then
java_cmd="$JAVA_HOME/bin/java"
fi
# Pull in the machine-wide settings configuration.
if [[ -f "$machine_sbt_opts_file" ]]; then
sbt_file_opts+=($(loadConfigFile "$machine_sbt_opts_file"))