From dc8a7509927ec89d1539faeceb8ccc5d2c07a1b9 Mon Sep 17 00:00:00 2001 From: Steven Massaro Date: Mon, 18 Jul 2022 10:21:53 -0500 Subject: [PATCH 1/5] properly handle multiple JAVA_HOME values separated by semicolons --- liquibase-dist/src/main/archive/liquibase | 5 +++++ liquibase-dist/src/main/archive/liquibase.bat | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/liquibase-dist/src/main/archive/liquibase b/liquibase-dist/src/main/archive/liquibase index b1e10e39021..74a1130a116 100644 --- a/liquibase-dist/src/main/archive/liquibase +++ b/liquibase-dist/src/main/archive/liquibase @@ -30,6 +30,11 @@ if [ -z "${JAVA_HOME}" ]; then elif [ -d "${LIQUIBASE_HOME}/.install4j/jre.bundle/Contents/Home" ]; then JAVA_HOME="${LIQUIBASE_HOME}/.install4j/jre.bundle/Contents/Home" fi +else + if [[ $JAVA_HOME == *";"* ]]; then + #JAVA_HOME is set, use only the first JAVA_HOME in the semicolon separated list + JAVA_HOME=$(echo "$JAVA_HOME" | cut -d ";" -f 1) + fi fi if [ -z "${JAVA_HOME}" ]; then diff --git a/liquibase-dist/src/main/archive/liquibase.bat b/liquibase-dist/src/main/archive/liquibase.bat index 4ad3e373c64..353d82ef29a 100644 --- a/liquibase-dist/src/main/archive/liquibase.bat +++ b/liquibase-dist/src/main/archive/liquibase.bat @@ -17,6 +17,11 @@ if exist "%LIQUIBASE_HOME%\jre" if "%JAVA_HOME%"=="" ( set JAVA_HOME=%LIQUIBASE_HOME%\jre ) +rem use only the first JAVA_HOME in the semicolon separated list +for /f "tokens=1 delims=;" %%a in ("%JAVA_HOME%") do ( + set JAVA_HOME=%%a +) + rem special characters may be lost setlocal DISABLEDELAYEDEXPANSION From 58058e4129c9ea6e08f335fa6ea0bb62241dd687 Mon Sep 17 00:00:00 2001 From: Steven Massaro Date: Mon, 18 Jul 2022 12:46:10 -0500 Subject: [PATCH 2/5] check only if JAVA_HOME path exists --- liquibase-dist/src/main/archive/liquibase | 6 +++--- liquibase-dist/src/main/archive/liquibase.bat | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/liquibase-dist/src/main/archive/liquibase b/liquibase-dist/src/main/archive/liquibase index 74a1130a116..ecef154859e 100644 --- a/liquibase-dist/src/main/archive/liquibase +++ b/liquibase-dist/src/main/archive/liquibase @@ -31,9 +31,9 @@ if [ -z "${JAVA_HOME}" ]; then JAVA_HOME="${LIQUIBASE_HOME}/.install4j/jre.bundle/Contents/Home" fi else - if [[ $JAVA_HOME == *";"* ]]; then - #JAVA_HOME is set, use only the first JAVA_HOME in the semicolon separated list - JAVA_HOME=$(echo "$JAVA_HOME" | cut -d ";" -f 1) + if [ ! -x "$JAVA_HOME" ] ; then + echo "ERROR: Liquibase cannot determine a valid JAVA_PATH or JAVA_HOME. Please inspect your configurations and try again." >&2 + exit 1 fi fi diff --git a/liquibase-dist/src/main/archive/liquibase.bat b/liquibase-dist/src/main/archive/liquibase.bat index 353d82ef29a..bb5c56ade78 100644 --- a/liquibase-dist/src/main/archive/liquibase.bat +++ b/liquibase-dist/src/main/archive/liquibase.bat @@ -17,9 +17,9 @@ if exist "%LIQUIBASE_HOME%\jre" if "%JAVA_HOME%"=="" ( set JAVA_HOME=%LIQUIBASE_HOME%\jre ) -rem use only the first JAVA_HOME in the semicolon separated list -for /f "tokens=1 delims=;" %%a in ("%JAVA_HOME%") do ( - set JAVA_HOME=%%a +if not exist "%JAVA_HOME%" ( + echo ERROR: Liquibase cannot determine a valid JAVA_PATH or JAVA_HOME. Please inspect your configurations and try again. >&2 + exit 1 ) rem special characters may be lost From 8989b31cb472cfed166207437898164b0bd46aee Mon Sep 17 00:00:00 2001 From: Steven Massaro Date: Mon, 18 Jul 2022 13:35:36 -0500 Subject: [PATCH 3/5] do not require JAVA_HOME value on Windows --- liquibase-dist/src/main/archive/liquibase.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/liquibase-dist/src/main/archive/liquibase.bat b/liquibase-dist/src/main/archive/liquibase.bat index bb5c56ade78..288e992d2fd 100644 --- a/liquibase-dist/src/main/archive/liquibase.bat +++ b/liquibase-dist/src/main/archive/liquibase.bat @@ -17,7 +17,7 @@ if exist "%LIQUIBASE_HOME%\jre" if "%JAVA_HOME%"=="" ( set JAVA_HOME=%LIQUIBASE_HOME%\jre ) -if not exist "%JAVA_HOME%" ( +if NOT "%JAVA_HOME%" == "" if not exist "%JAVA_HOME%" ( echo ERROR: Liquibase cannot determine a valid JAVA_PATH or JAVA_HOME. Please inspect your configurations and try again. >&2 exit 1 ) From 1cd638e96206468b3240e90eff4f977256659bd6 Mon Sep 17 00:00:00 2001 From: Steven Massaro Date: Tue, 19 Jul 2022 08:06:33 -0500 Subject: [PATCH 4/5] change error message --- liquibase-dist/src/main/archive/liquibase | 2 +- liquibase-dist/src/main/archive/liquibase.bat | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/liquibase-dist/src/main/archive/liquibase b/liquibase-dist/src/main/archive/liquibase index ecef154859e..088a19e86ec 100644 --- a/liquibase-dist/src/main/archive/liquibase +++ b/liquibase-dist/src/main/archive/liquibase @@ -32,7 +32,7 @@ if [ -z "${JAVA_HOME}" ]; then fi else if [ ! -x "$JAVA_HOME" ] ; then - echo "ERROR: Liquibase cannot determine a valid JAVA_PATH or JAVA_HOME. Please inspect your configurations and try again." >&2 + echo "ERROR: The JAVA_HOME environment variable is not defined correctly, so Liquibase cannot be started. JAVA_HOME is set to \"$JAVA_HOME\" and it does not exist." >&2 exit 1 fi fi diff --git a/liquibase-dist/src/main/archive/liquibase.bat b/liquibase-dist/src/main/archive/liquibase.bat index 288e992d2fd..f8836bf566a 100644 --- a/liquibase-dist/src/main/archive/liquibase.bat +++ b/liquibase-dist/src/main/archive/liquibase.bat @@ -18,7 +18,7 @@ if exist "%LIQUIBASE_HOME%\jre" if "%JAVA_HOME%"=="" ( ) if NOT "%JAVA_HOME%" == "" if not exist "%JAVA_HOME%" ( - echo ERROR: Liquibase cannot determine a valid JAVA_PATH or JAVA_HOME. Please inspect your configurations and try again. >&2 + echo ERROR: The JAVA_HOME environment variable is not defined correctly, so Liquibase cannot be started. JAVA_HOME is set to "%JAVA_HOME%" and it does not exist. >&2 exit 1 ) From 6ec6897526eb73801cae9ad1ef7c286f39ca5d86 Mon Sep 17 00:00:00 2001 From: Steven Massaro Date: Tue, 19 Jul 2022 08:06:56 -0500 Subject: [PATCH 5/5] do not exit entire cmd prompt, only the script --- liquibase-dist/src/main/archive/liquibase.bat | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/liquibase-dist/src/main/archive/liquibase.bat b/liquibase-dist/src/main/archive/liquibase.bat index f8836bf566a..99b54cb3ac9 100644 --- a/liquibase-dist/src/main/archive/liquibase.bat +++ b/liquibase-dist/src/main/archive/liquibase.bat @@ -19,7 +19,7 @@ if exist "%LIQUIBASE_HOME%\jre" if "%JAVA_HOME%"=="" ( if NOT "%JAVA_HOME%" == "" if not exist "%JAVA_HOME%" ( echo ERROR: The JAVA_HOME environment variable is not defined correctly, so Liquibase cannot be started. JAVA_HOME is set to "%JAVA_HOME%" and it does not exist. >&2 - exit 1 + exit /B 1 ) rem special characters may be lost