1313# #
1414# @author Tobias Fischer #
1515# @url https://github.com/tofi86/universalJavaApplicationStub #
16- # @date 2015-05-15 #
16+ # @date 2015-09-29 #
1717# @version 0.9.0 #
1818# #
1919# #
216216
217217
218218
219+ #
220+ # function: Java version tester
221+ # ###########################################
222+
223+ function JavaVersionSatisfiesRequirement() {
224+ java_ver=$1
225+ java_req=$2
226+
227+ # e.g. 1.8*
228+ if [[ ${java_req} =~ ^[0-9]\. [0-9]\* $ ]] ; then
229+ java_req_num=${java_req: 0: 3}
230+ java_ver_num=${java_ver: 0: 3}
231+ if [ ${java_ver_num} == ${java_req_num} ] ; then
232+ return 0
233+ else
234+ return 1
235+ fi
236+
237+ # e.g. 1.8+
238+ elif [[ ${java_req} =~ ^[0-9]\. [0-9]\+ $ ]] ; then
239+ java_req_num=` echo ${java_req} | sed -E ' s/[[:punct:]]//g' `
240+ java_ver_num=` echo ${java_ver} | sed -E ' s/[[:punct:]]//g' `
241+ if [ ${java_ver_num} -ge ${java_req_num} ] ; then
242+ return 0
243+ else
244+ return 1
245+ fi
246+
247+ # e.g. 1.8
248+ elif [[ ${java_req} =~ ^[0-9]\. [0-9]$ ]] ; then
249+ if [ ${java_ver} == ${java_req} ] ; then
250+ return 0
251+ else
252+ return 1
253+ fi
254+
255+ # not matching any of the above patterns
256+ else
257+ return 2
258+ fi
259+ }
260+
261+
262+ #
263+ # function: extract Java major version
264+ # from java -version command
265+ # ###########################################
266+
267+ function extractJavaMajorVersion() {
268+ echo ` " $1 " -version 2>&1 | awk ' /version/{print $NF}' | sed -E ' s/"([0-9.]{3})[0-9_.]{5}"/\1/g' `
269+ }
270+
271+
272+
219273#
220274# find installed Java versions
221275# ###########################################
222276
277+ apple_jre_plugin=" /Library/Java/Home/bin/java"
278+ apple_jre_version=` extractJavaMajorVersion " ${apple_jre_plugin} " `
279+ oracle_jre_plugin=" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java"
280+ oracle_jre_version=` extractJavaMajorVersion " ${oracle_jre_plugin} " `
281+
223282# first check system variable "$JAVA_HOME"
224283if [ -n " $JAVA_HOME " ] ; then
225284 JAVACMD=" $JAVA_HOME /bin/java"
226285
227- # check for specified JVMversion in "/usr/libexec/java_home" symlinks
228- elif [ ! -z ${JVMVersion} ] && [ -x /usr/libexec/java_home ] && /usr/libexec/java_home -F ; then
286+ # check for JVMversion requirements
287+ elif [ ! -z ${JVMVersion} ] ; then
229288
230- if /usr/libexec/java_home -F -v ${JVMVersion} ; then
289+ # first in "/usr/libexec/java_home" symlinks
290+ if [ -x /usr/libexec/java_home ] && /usr/libexec/java_home -F -v ${JVMVersion} ; then
231291 JAVACMD=" ` /usr/libexec/java_home -F -v ${JVMVersion} 2> /dev/null` /bin/java"
292+
293+ # then in Apple JRE plugin
294+ elif [ -x " ${apple_jre_plugin} " ] && JavaVersionSatisfiesRequirement ${apple_jre_version} ${JVMVersion} ; then
295+ JAVACMD=" ${apple_jre_plugin} "
296+
297+ # then in Oracle JRE plugin
298+ elif [ -x " ${oracle_jre_plugin} " ] && JavaVersionSatisfiesRequirement ${oracle_jre_version} ${JVMVersion} ; then
299+ JAVACMD=" ${oracle_jre_plugin} "
300+
232301 else
233302 # display error message with applescript
234303 osascript -e " tell application \" System Events\" to display dialog \" ERROR launching '${CFBundleName} '\n\nNo suitable Java version found on your system!\nThis program requires Java ${JVMVersion} \nMake sure you install the required Java version.\" with title \" ${CFBundleName} \" buttons {\" OK \" } default button 1 with icon path to resource \" ${CFBundleIconFile} \" in bundle (path to me)"
@@ -240,13 +309,13 @@ elif [ ! -z ${JVMVersion} ] && [ -x /usr/libexec/java_home ] && /usr/libexec/jav
240309elif [ -x /usr/libexec/java_home ] && /usr/libexec/java_home -F; then
241310 JAVACMD=" ` /usr/libexec/java_home 2> /dev/null` /bin/java"
242311
243- # otherwise check Java standard symlink (old Apple Java )
312+ # otherwise check Java standard symlink (old Apple JRE )
244313elif [ -h /Library/Java/Home ]; then
245- JAVACMD=" /Library/Java/Home/bin/java "
314+ JAVACMD=" ${apple_jre_plugin} "
246315
247316# fallback: public JRE plugin (Oracle Java)
248317else
249- JAVACMD=" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java "
318+ JAVACMD=" ${oracle_jre_plugin} "
250319fi
251320
252321# fallback fallback: /usr/bin/java
0 commit comments