diff --git a/bin/ki.bat b/bin/ki.bat index c48c9f3..c3b5d47 100644 --- a/bin/ki.bat +++ b/bin/ki.bat @@ -1,6 +1,31 @@ @echo off +setlocal enabledelayedexpansion -set SCRIPT_PATH=%~dp0 -set KI_SHELL=%SCRIPT_PATH%\..\lib\ki-shell.jar +set SCRIPT_DIR=%~dp0 +set KI_SHELL=%SCRIPT_DIR%\..\lib\ki-shell.jar +set JAVA_OPTS=%* -java -jar %KI_SHELL% %* +for /f "tokens=3" %%g in ('java -version 2^>^&1 ^| findstr /i "version"') do ( + set JAVA_VERSION=%%g +) + +set JAVA_VERSION=%JAVA_VERSION:"=% + +for /f "delims=. tokens=1-3" %%v in ("%JAVA_VERSION%") do ( + if %%v EQU 1 ( + if %%w LSS 8 ( + @echo java has version !JAVA_VERSION! but at least 1.8 is required + exit /b 1 + ) + ) else ( + set ADD_OPENS=--add-opens java.base/java.util=ALL-UNNAMED + if not defined JAVA_OPTS ( + set JAVA_OPTS=!ADD_OPENS! + ) else ( + set JAVA_OPTS=!JAVA_OPTS! !ADD_OPENS! + ) + ) + java !JAVA_OPTS! -jar !KI_SHELL! +) + +endlocal \ No newline at end of file diff --git a/bin/ki.sh b/bin/ki.sh index ba7d4ad..9d2821a 100755 --- a/bin/ki.sh +++ b/bin/ki.sh @@ -1,6 +1,41 @@ #!/usr/bin/env bash -SCRIPT_DIR="$( dirname $(realpath "$0") )" +if command -v java &>/dev/null; then + _JAVA=java +elif [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then + _JAVA="$JAVA_HOME/bin/java" +else + echo "java not found" + exit 1 +fi + +if [[ "$_JAVA" ]]; then + JAVA_VERSION=$("$_JAVA" -version 2>&1 | awk -F '"' '/version/ {print $2}') + if [[ "$JAVA_VERSION" =~ ^1\.[0-8]+ ]]; then + if [[ "$JAVA_VERSION" =~ ^1\.[0-7]+ ]]; then + echo "java has version $JAVA_VERSION but at least 1.8 is required" + exit 1 + fi + else + ADD_OPENS="--add-opens java.base/java.util=ALL-UNNAMED" + if [[ "$JAVA_OPTS" ]]; then + JAVA_OPTS="$JAVA_OPTS $ADD_OPENS" + else + JAVA_OPTS=$ADD_OPENS + fi + fi +fi + +command -v realpath &>/dev/null || realpath() { + SCRIPT_PATH=$([[ $1 == /* ]] && echo "$1" || echo "$PWD/${1#./}") + if [[ -L "$SCRIPT_PATH" ]]; then + readlink "$SCRIPT_PATH" + else + echo $SCRIPT_PATH + fi +} + +SCRIPT_DIR="$(dirname "$(realpath "$0")")" KI_SHELL=$SCRIPT_DIR/../lib/ki-shell.jar -java -jar ${KI_SHELL} $@ +$_JAVA $JAVA_OPTS -jar "${KI_SHELL}" $@