|
11 | 11 | # # |
12 | 12 | # @author Tobias Fischer # |
13 | 13 | # @url https://github.com/tofi86/universalJavaApplicationStub # |
| 14 | +# @date 2018-02-18 # |
14 | 15 | # @version 2.1.0 # |
15 | | -# @date 2018-02-17 # |
16 | 16 | # # |
17 | 17 | ################################################################################## |
18 | 18 | # # |
@@ -190,10 +190,11 @@ if [ $exitcode -eq 0 ]; then |
190 | 190 | # read the SplashFile name |
191 | 191 | JVMSplashFile=$(plist_get_java ':SplashFile') |
192 | 192 |
|
193 | | - # read the JVM Properties |
194 | | - JVMOptions=$(plist_get_java ':Properties' | grep " =" | sed 's/^ */-D/g' | tr '\n' ' ' | sed 's/ */ /g' | sed 's/ = /=/g' | xargs) |
195 | | - # replace occurences of $APP_ROOT with its content |
196 | | - JVMOptions=$(eval echo "${JVMOptions}") |
| 193 | + # read the JVM Properties as an array and retain spaces |
| 194 | + IFS=$'\t\n' |
| 195 | + JVMOptions=($(xargs -n1 <<<$(plist_get_java ':Properties' | grep " =" | sed 's/^ */-D/g' | sed -E 's/ = (.*)$/="\1"/g'))) |
| 196 | + unset IFS |
| 197 | + # post processing of the array follows further below... |
197 | 198 |
|
198 | 199 | # read the ClassPath in either Array or String style |
199 | 200 | JVMClassPath_RAW=$(plist_get_java ':ClassPath' | xargs) |
@@ -247,10 +248,11 @@ else |
247 | 248 | # read the SplashFile name |
248 | 249 | JVMSplashFile=$(plist_get ':JVMSplashFile') |
249 | 250 |
|
250 | | - # read the JVM Options |
251 | | - JVMOptions=$(plist_get ':JVMOptions' | grep " -" | tr -d '\n' | sed 's/ */ /g' | xargs) |
252 | | - # replace occurences of $APP_ROOT with its content |
253 | | - JVMOptions=$(eval echo "${JVMOptions}") |
| 251 | + # read the JVM Options as an array and retain spaces |
| 252 | + IFS=$'\t\n' |
| 253 | + JVMOptions=($(plist_get ':JVMOptions' | grep " " | sed 's/^ *//g')) |
| 254 | + unset IFS |
| 255 | + # post processing of the array follows further below... |
254 | 256 |
|
255 | 257 | # read the ClassPath in either Array or String style |
256 | 258 | JVMClassPath_RAW=$(plist_get ':JVMClassPath') |
|
302 | 304 | MainArgsArr+=("$(eval echo "$i")") |
303 | 305 | done |
304 | 306 |
|
| 307 | +# JVMOptions: replace occurences of $APP_ROOT with its content |
| 308 | +JVMOptionsArr=() |
| 309 | +for i in "${JVMOptions[@]}" |
| 310 | +do |
| 311 | + JVMOptionsArr+=("$(eval echo "$i")") |
| 312 | +done |
305 | 313 |
|
306 | 314 |
|
307 | 315 | # internationalized messages |
@@ -753,13 +761,13 @@ stub_logger "[WorkingDirectory] ${WorkingDirectory}" |
753 | 761 | # - main class |
754 | 762 | # - main arguments |
755 | 763 | # - passthru arguments |
756 | | -stub_logger "[Exec] \"$JAVACMD\" -cp \"${JVMClassPath}\" -splash:\"${ResourcesFolder}/${JVMSplashFile}\" -Xdock:icon=\"${ResourcesFolder}/${CFBundleIconFile}\" -Xdock:name=\"${CFBundleName}\" ${JVMOptions:+$JVMOptions }${JVMDefaultOptions:+$JVMDefaultOptions }${JVMMainClass}${MainArgsArr:+ $(printf "'%s' " "${MainArgsArr[@]}")}${ArgsPassthru:+ $(printf "'%s' " "${ArgsPassthru[@]}")}" |
| 764 | +stub_logger "[Exec] \"$JAVACMD\" -cp \"${JVMClassPath}\" -splash:\"${ResourcesFolder}/${JVMSplashFile}\" -Xdock:icon=\"${ResourcesFolder}/${CFBundleIconFile}\" -Xdock:name=\"${CFBundleName}\" ${JVMOptionsArr:+$(printf "'%s' " "${JVMOptionsArr[@]}") }${JVMDefaultOptions:+$JVMDefaultOptions }${JVMMainClass}${MainArgsArr:+ $(printf "'%s' " "${MainArgsArr[@]}")}${ArgsPassthru:+ $(printf "'%s' " "${ArgsPassthru[@]}")}" |
757 | 765 | exec "${JAVACMD}" \ |
758 | 766 | -cp "${JVMClassPath}" \ |
759 | 767 | -splash:"${ResourcesFolder}/${JVMSplashFile}" \ |
760 | 768 | -Xdock:icon="${ResourcesFolder}/${CFBundleIconFile}" \ |
761 | 769 | -Xdock:name="${CFBundleName}" \ |
762 | | - ${JVMOptions:+$JVMOptions }\ |
| 770 | + ${JVMOptions:+"$JVMOptions[@]}" }\ |
763 | 771 | ${JVMDefaultOptions:+$JVMDefaultOptions }\ |
764 | 772 | "${JVMMainClass}"\ |
765 | 773 | ${MainArgsArr:+ "${MainArgsArr[@]}"}\ |
|
0 commit comments