From d48895df85f4f8366461d5c48ea1a02cf8adb5b0 Mon Sep 17 00:00:00 2001 From: Ondra Pelech Date: Fri, 12 Dec 2025 15:44:25 +0100 Subject: [PATCH] Handle JDK_JAVA_OPTIONS --- launcher-package/src/universal/bin/sbt.bat | 12 ++++++++++-- sbt | 17 ++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/launcher-package/src/universal/bin/sbt.bat b/launcher-package/src/universal/bin/sbt.bat index 3c3468e2f..3a876b758 100755 --- a/launcher-package/src/universal/bin/sbt.bat +++ b/launcher-package/src/universal/bin/sbt.bat @@ -718,6 +718,7 @@ if defined sbt_args_verbose ( if defined _JAVA_OPTS ( call :echolist !_JAVA_OPTS! ) if defined _SBT_OPTS ( call :echolist !_SBT_OPTS! ) if defined JAVA_TOOL_OPTIONS ( call :echolist %JAVA_TOOL_OPTIONS% ) + if defined JDK_JAVA_OPTIONS ( call :echolist %JDK_JAVA_OPTIONS% ) echo -cp echo "!sbt_jar!" echo xsbt.boot.Boot @@ -725,7 +726,7 @@ if defined sbt_args_verbose ( echo. ) -"!_JAVACMD!" !_JAVA_OPTS! !_SBT_OPTS! %JAVA_TOOL_OPTIONS% -cp "!sbt_jar!" xsbt.boot.Boot %* +"!_JAVACMD!" !_JAVA_OPTS! !_SBT_OPTS! %JAVA_TOOL_OPTIONS% %JDK_JAVA_OPTIONS% -cp "!sbt_jar!" xsbt.boot.Boot %* goto :eof @@ -859,7 +860,7 @@ exit /B 0 exit /B 0 :addDefaultMemory - rem if we detect any of these settings in ${JAVA_OPTS} or ${JAVA_TOOL_OPTIONS} we need to NOT output our settings. + rem if we detect any of these settings in ${JAVA_OPTS} or ${JAVA_TOOL_OPTIONS} or ${JDK_JAVA_OPTIONS} we need to NOT output our settings. rem The reason is the Xms/Xmx, if they don't line up, cause errors. set _has_memory_args= @@ -878,6 +879,13 @@ exit /B 0 if "!p:~0,4!" == "-Xss" set _has_memory_args=1 ) + if defined JDK_JAVA_OPTIONS for %%g in (%JDK_JAVA_OPTIONS%) do ( + set "p=%%g" + if "!p:~0,4!" == "-Xmx" set _has_memory_args=1 + if "!p:~0,4!" == "-Xms" set _has_memory_args=1 + if "!p:~0,4!" == "-Xss" set _has_memory_args=1 + ) + if defined _SBT_OPTS for %%g in (%_SBT_OPTS%) do ( set "p=%%g" if "!p:~0,4!" == "-Xmx" set _has_memory_args=1 diff --git a/sbt b/sbt index aa12e7446..7851a2eeb 100755 --- a/sbt +++ b/sbt @@ -303,7 +303,7 @@ addMemory () { } addDefaultMemory() { - # if we detect any of these settings in ${JAVA_OPTS} or ${JAVA_TOOL_OPTIONS} we need to NOT output our settings. + # if we detect any of these settings in ${JAVA_OPTS} or ${JAVA_TOOL_OPTIONS} or ${JDK_JAVA_OPTIONS} we need to NOT output our settings. # The reason is the Xms/Xmx, if they don't line up, cause errors. if [[ "${java_args[@]}" == *-Xmx* ]] || \ [[ "${java_args[@]}" == *-Xms* ]] || \ @@ -323,6 +323,15 @@ addDefaultMemory() { [[ "${JAVA_TOOL_OPTIONS}" == *-XX:MaxRAMPercentage* ]] || \ [[ "${JAVA_TOOL_OPTIONS}" == *-XX:MinRAMPercentage* ]] ; then : + elif [[ "${JDK_JAVA_OPTIONS}" == *-Xmx* ]] || \ + [[ "${JDK_JAVA_OPTIONS}" == *-Xms* ]] || \ + [[ "${JDK_JAVA_OPTIONS}" == *-Xss* ]] || \ + [[ "${JDK_JAVA_OPTIONS}" == *-XX:+UseCGroupMemoryLimitForHeap* ]] || \ + [[ "${JDK_JAVA_OPTIONS}" == *-XX:MaxRAM* ]] || \ + [[ "${JDK_JAVA_OPTIONS}" == *-XX:InitialRAMPercentage* ]] || \ + [[ "${JDK_JAVA_OPTIONS}" == *-XX:MaxRAMPercentage* ]] || \ + [[ "${JDK_JAVA_OPTIONS}" == *-XX:MinRAMPercentage* ]] ; then + : elif [[ "${sbt_options[@]}" == *-Xmx* ]] || \ [[ "${sbt_options[@]}" == *-Xms* ]] || \ [[ "${sbt_options[@]}" == *-Xss* ]] || \ @@ -406,16 +415,19 @@ jdk_version() { # - SBT_OPTS environment variable, # - _JAVA_OPTIONS environment variable and # - JAVA_TOOL_OPTIONS environment variable +# - JDK_JAVA_OPTIONS environment variable # in that order. findProperty() { local -a java_opts_array local -a sbt_opts_array local -a _java_options_array local -a java_tool_options_array + local -a jdk_java_options_array read -a java_opts_array <<< "$JAVA_OPTS" read -a sbt_opts_array <<< "$SBT_OPTS" read -a _java_options_array <<< "$_JAVA_OPTIONS" read -a java_tool_options_array <<< "$JAVA_TOOL_OPTIONS" + read -a jdk_java_options_array <<< "$JDK_JAVA_OPTIONS" local args_to_check=( "${java_args[@]}" @@ -423,6 +435,7 @@ findProperty() { "${sbt_opts_array[@]}" "${_java_options_array[@]}" "${java_tool_options_array[@]}") + "${jdk_java_options_array[@]}") for opt in "${args_to_check[@]}"; do if [[ "$opt" == -D$1=* ]]; then @@ -577,6 +590,7 @@ run() { "${java_args[@]}" \ "${sbt_options[@]}" \ "${java_tool_options[@]}" \ + "${jdk_java_options[@]}" \ -jar "$sbt_jar" \ "${sbt_commands[@]}" \ "${residual_args[@]}" @@ -856,6 +870,7 @@ fi java_args=($JAVA_OPTS) sbt_options0=(${SBT_OPTS:-$default_sbt_opts}) java_tool_options=($JAVA_TOOL_OPTIONS) +jdk_java_options=($JDK_JAVA_OPTIONS) if [[ "$SBT_NATIVE_CLIENT" == "true" ]]; then use_sbtn=1 fi