Path: blob/main/java/javavmwrapper/src/javavmwrapper.sh
16461 views
#!/bin/sh1#2# javawrapper.sh3#4# Allow the installation of several Java Virtual Machines on the system.5# They can then be selected from based on environment variables and the6# configuration file.7#8# ----------------------------------------------------------------------------9# "THE BEER-WARE LICENSE" (Revision 42, (c) Poul-Henning Kamp):10# Maxim Sobolev <[email protected]> wrote this file. As long as you retain11# this notice you can do whatever you want with this stuff. If we meet some12# day, and you think this stuff is worth it, you can buy me a beer in return.13#14# Maxim Sobolev15# ----------------------------------------------------------------------------16#17# ----------------------------------------------------------------------------18# "THE BEER-WARE LICENSE" (Revision 42, (c) Poul-Henning Kamp):19# Greg Lewis <[email protected]> substantially rewrote this file. As long20# as you retain this notice you can do whatever you want with this stuff. If21# we meet some day, and you think this stuff is worth it, you can buy me a22# beer in return.23#24# Greg Lewis25# ----------------------------------------------------------------------------26#27# [email protected]2829_JAVAVM_SAVE_PATH=${PATH}30export PATH=/bin:/sbin:/usr/bin:/usr/sbin3132_JAVAVM_PREFIX="%%PREFIX%%"33_JAVAVM_CONF="${_JAVAVM_PREFIX}/etc/javavms"34_JAVAVM_OPTS_CONF="${_JAVAVM_PREFIX}/etc/javavm_opts.conf"35_JAVAVM_PROG=`basename "${0}"`36_JAVAVM_MAKE=/usr/bin/make3738#39# Try to run a Java command.40#41tryJavaCommand () {42# If this is a test run, spit out the configuration and exit43if [ -n "${JAVAVM_DRYRUN}" ]; then44echo "JAVA_HOME=${JAVA_HOME}"45echo "JAVAVM_CONF=${_JAVAVM_CONF}"46echo "JAVAVM_OPTS_CONF=${_JAVAVM_OPTS_CONF}"47echo "JAVAVM_PROG=${1}"48echo "JAVAVM_OPTS=${_JAVAVM_OPTS}"49echo "JAVAVM_COMMAND=${@}"50exit 051fi5253# Check for the command being executable and exec it if so.54if [ -x "${1}" ]; then55if [ -n "${_JAVAVM_SAVE_PATH}" ]; then56export PATH=${_JAVAVM_SAVE_PATH}57fi58exec "${@}"59fi6061echo "${_JAVAVM_PROG}: warning: couldn't run specified Java command - \"${1}\"" 1>&262}6364#65# Set java command options, if applicable66# 1 - Name of the java programme to be executed.67# 2 - Base directory of JAVA_HOME for the java programme to be executed.68#69setJavaOptions () {70local OPTS_PROG=`echo ${1} | sed -e s/\\\\./_/g -e s/-/_/g`71local OPTS_JAVA_HOME=`echo ${2} | sed -e s/\\\\./_/g -e s/-/_/g`72local JAVA_HOME_PROG_OPTS="`eval echo \$\{JAVAVM_OPTS_${OPTS_JAVA_HOME}_${OPTS_PROG}\} 2>/dev/null`"73local JAVA_HOME_OPTS="`eval echo \$\{JAVAVM_OPTS_${OPTS_JAVA_HOME}\} 2>/dev/null`"74local PROG_OPTS="`eval echo \$\{JAVAVM_OPTS_${OPTS_PROG}\} 2>/dev/null`"7576# Possible environment variables are stackable77if [ -n "${JAVA_HOME_PROG_OPTS}" ]; then78_JAVAVM_OPTS="${JAVA_HOME_PROG_OPTS} ${_JAVAVM_OPTS}"79fi80if [ -n "${JAVA_HOME_OPTS}" ]; then81_JAVAVM_OPTS="${JAVA_HOME_OPTS} ${_JAVAVM_OPTS}"82fi83if [ -n "${PROG_OPTS}" ]; then84_JAVAVM_OPTS="${PROG_OPTS} ${_JAVAVM_OPTS}"85fi86if [ -n "${JAVAVM_OPTS}" ]; then87_JAVAVM_OPTS="${JAVAVM_OPTS} ${_JAVAVM_OPTS}"88fi89}9091#92# Create symbolic links for all of a Java VMs executables.93#94createJavaLinks () {95for exe in "${1}"/bin/* "${1}"/jre/bin/*; do96if [ -x "${exe}" -a \97! -d "${exe}" -a \98"`basename "${exe}"`" = "`basename "${exe}" .so`" -a \99! -e "${_JAVAVM_PREFIX}/bin/`basename "${exe}"`" -a \100-w "${_JAVAVM_PREFIX}/bin" ]; then101ln -s "${_JAVAVM_PREFIX}/bin/javavm" \102"${_JAVAVM_PREFIX}/bin/`basename "${exe}"`" 2>/dev/null103fi104done105}106107#108# Sort the configuration file109#110sortConfiguration () {111local IFS=:112113# Ensure the configuration file exists114if [ ! -f "${_JAVAVM_CONF}" ]; then115return116fi117118# Ensure the configuration file has the correct permissions119if [ ! -w "${_JAVAVM_CONF}" -o ! -r "${_JAVAVM_CONF}" ]; then120echo "${_JAVAVM_PROG}: error: can't read/write ${_JAVAVM_CONF} configuration file!" 1>&2121return122fi123124cat "${_JAVAVM_CONF}" | \125(126export JAVAVMS127while read JAVAVM; do128VM=`echo "${JAVAVM}" | sed -E 's|[[:space:]]*#.*||' 2>/dev/null`129# Check that the VM exists and is "sane"130if [ ! -e "${VM}" ]; then131continue132fi133if [ -d "${VM}" ]; then134continue135fi136if [ ! -x "${VM}" ]; then137continue138fi139if [ `basename "${VM}"` != "java" ]; then140continue141fi142if [ "`realpath "${VM}" 2>/dev/null `" = "${_JAVAVM_PREFIX}/bin/javavm" ]; then143continue144fi145# Skip duplicate VMs146if [ -n "${JAVAVMS}" ]; then147for _JAVAVM in ${JAVAVMS}; do148if [ -z "${_JAVAVM}" ]; then149continue150fi151_VM=`echo "${_JAVAVM}" | sed -E 's|[[:space:]]*#.*||' 2>/dev/null`152if [ "x${VM}" = "x${_VM}" ]; then153continue 2154fi155done156fi157VM=`dirname "${VM}"`158VM=`dirname "${VM}"`159VM=`basename "${VM}"`160_JAVAVMS=:161for _JAVAVM in ${JAVAVMS}; do162if [ -z "${_JAVAVM}" ]; then163continue164fi165if [ -z "${JAVAVM}" ]; then166_JAVAVMS="${_JAVAVMS}:${_JAVAVM}"167continue168fi169_VM=`echo "${_JAVAVM}" | sed -E 's|[[:space:]]*#.*||' 2>/dev/null`170_VM=`dirname "${_VM}"`171_VM=`dirname "${_VM}"`172_VM=`basename "${_VM}"`173# Consistent version numbering for various install directory names.174VERSION=`echo ${VM} | sed -e 's|[^0-9]*||' \175-e 's|1\.\([0-9][0-9]*\)|\1|' \176-e 's|\([0-9][0-9]*\)\.[0-9]|\1|' \177-e 's|[^0-9]*\([0-9][0-9]*\)[^0-9]*|\1|'1782>/dev/null`179_VERSION=`echo ${_VM} | sed -e 's|[^0-9]*||' \180-e 's|1\.\([0-9][0-9]*\)|\1|' \181-e 's|\([0-9][0-9]*\)\.[0-9]|\1|' \182-e 's|[^0-9]*\([0-9][0-9]*\)[^0-9]*|\1|'1832>/dev/null`184if [ "${VERSION}" -gt "${_VERSION}" ]; then185_JAVAVMS="${_JAVAVMS}:${JAVAVM}:${_JAVAVM}"186JAVAVM=187continue188elif [ "${VERSION}" -lt "${_VERSION}" ]; then189_JAVAVMS="${_JAVAVMS}:${_JAVAVM}"190continue191else192case "${VM}" in193openjdk*)194_JAVAVMS="${_JAVAVMS}:${JAVAVM}:${_JAVAVM}"195JAVAVM=196continue197;;198linux-sun-jdk*|linux-oracle-jdk*)199case "${_VM}" in200open*)201_JAVAVMS="${_JAVAVMS}:${_JAVAVM}"202continue203;;204*)205_JAVAVMS="${_JAVAVMS}:${JAVAVM}:${_JAVAVM}"206JAVAVM=207continue208;;209esac210;;211linux-sun-jre*|linux-oracle-jre*)212case "${_VM}" in213open*|linux-sun*|linux-oracle*)214_JAVAVMS="${_JAVAVMS}:${_JAVAVM}"215continue216;;217*)218_JAVAVMS="${_JAVAVMS}:${JAVAVM}:${_JAVAVM}"219JAVAVM=220continue221;;222esac223;;224esac225_JAVAVMS="${_JAVAVMS}:${_JAVAVM}"226fi227done228JAVAVMS="${_JAVAVMS}"229if [ -n "${JAVAVM}" ]; then230JAVAVMS="${JAVAVMS}:${JAVAVM}"231fi232done;233if [ -n "${JAVAVMS}" ]; then234rm "${_JAVAVM_CONF}"235for JAVAVM in ${JAVAVMS}; do236if [ -n "${JAVAVM}" ]; then237echo "${JAVAVM}" >> "${_JAVAVM_CONF}"238fi239done240fi241)242}243244#245# Check all of the VMs in the configuration file246#247checkVMs () {248# Ensure the configuration file exists249if [ ! -f "${_JAVAVM_CONF}" ]; then250exit 0251fi252253# Ensure the configuration file has the correct permissions254if [ ! -w "${_JAVAVM_CONF}" -o ! -r "${_JAVAVM_CONF}" ]; then255echo "${_JAVAVM_PROG}: error: can't read/write ${_JAVAVM_CONF} configuration file!" 1>&2256exit 1257fi258259# Sort the configuration. This will also remove duplicates and260# non-existent VMs261sortConfiguration262263# Ensure links are created for every executable for a VM.264cat "${_JAVAVM_CONF}" | \265(266while read JAVAVM; do267VM=`echo "${JAVAVM}" | sed -E 's|[[:space:]]*#.*||' 2>/dev/null`268# Create symbolic links as appropriate if they don't exist.269JAVA_HOME=`dirname "${VM}"`270JAVA_HOME=`dirname "${JAVA_HOME}"`271createJavaLinks "${JAVA_HOME}"272done;273)274275exit 0276}277278#279# Register a new Java VM.280#281registerVM () {282# Check the java command given to us.283if [ -z "${1}" ]; then284echo "Usage: ${_JAVAVM_PROG} path"285exit 1286fi287288# Create the configuration file if it doesn't exist289if [ ! -e "${_JAVAVM_CONF}" ]; then290touch "${_JAVAVM_CONF}"291fi292293# Ensure the configuration file exists and has the correct permissions294if [ ! -f "${_JAVAVM_CONF}" -o ! -w "${_JAVAVM_CONF}" -o ! -r "${_JAVAVM_CONF}" ]; then295echo "${_JAVAVM_PROG}: error: can't read/write ${_JAVAVM_CONF} configuration file!" 1>&2296exit 1297fi298299# Check that the given VM can be found in the configuration file300VM=`echo "${1}" | sed -E 's|[[:space:]]*#.*||' 2>/dev/null`301REGISTERED=302if [ -n "`grep "${VM}" "${_JAVAVM_CONF}"`" ]; then303echo "${_JAVAVM_PROG}: warning: JavaVM \"${VM}\" is already registered" 1>&2304REGISTERED="yes"305fi306307# Check that the VM exists and is "sane"308if [ ! -e "${VM}" ]; then309echo "${_JAVAVM_PROG}: error: JavaVM \"${VM}\" does not exist" 1>&2310exit 1311fi312if [ -d "${VM}" ]; then313echo "${_JAVAVM_PROG}: error: JavaVM \"${VM}\" is a directory" 1>&2314exit 1315fi316if [ ! -x "${VM}" ]; then317echo "${_JAVAVM_PROG}: error: JavaVM \"${VM}\" is not executable" 1>&2318exit 1319fi320if [ `basename "${VM}"` != "java" ]; then321echo "${_JAVAVM_PROG}: error: JavaVM \"${VM}\" is not valid" 1>&2322exit 1323fi324if [ "`realpath "${VM}" 2>/dev/null `" = "${_JAVAVM_PREFIX}/bin/javavm" ]; then325echo "${_JAVAVM_PROG}: error: JavaVM \"${VM}\" is javavm!" 1>&2326exit 1327fi328329# Add the VM to the configuration file330if [ "${REGISTERED}" != "yes" ]; then331echo "${1}" >> "${_JAVAVM_CONF}"332fi333334# Create symbolic links as appropriate if they don't exist.335JAVA_HOME=`dirname "${VM}"`336JAVA_HOME=`dirname "${JAVA_HOME}"`337createJavaLinks "${JAVA_HOME}"338339# Sort the VMs340sortConfiguration341342exit 0343}344345#346# Unregister a Java VM.347#348unregisterVM () {349# Check usage350if [ -z "${1}" ]; then351echo "Usage: ${_JAVAVM_PROG} path"352exit 1353fi354355# Check for the configuration file356if [ ! -e "${_JAVAVM_CONF}" ]; then357echo "${_JAVAVM_PROG}: error: can't find ${_JAVAVM_CONF} configuration file!" 1>&2358exit 1359fi360361# Ensure the configuration file has the correct permissions362if [ ! -w "${_JAVAVM_CONF}" -o ! -r "${_JAVAVM_CONF}" ]; then363echo "${_JAVAVM_PROG}: error: can't read/write ${_JAVAVM_CONF} configuration file!" 1>&2364exit 1365fi366367# Check that the given VM can be found in the configuration file368if [ -z "`grep "${1}" "${_JAVAVM_CONF}"`" ]; then369echo "${_JAVAVM_PROG}: error: \"${1}\" JavaVM is not currently registered"370exit 1371fi372373# Remove unneeded symlinks374VMS=`sed -E 's|[[:space:]]*#.*||' < "${_JAVAVM_CONF}" | uniq 2>/dev/null`375VM=`grep "${1}" "${_JAVAVM_CONF}" | sed -E 's|[[:space:]]*#.*||' 2>/dev/null`376JAVA_HOME=`dirname "${VM}"`377JAVA_HOME=`dirname "${JAVA_HOME}"`378for exe in "${JAVA_HOME}"/bin/* "${JAVA_HOME}"/jre/bin/*; do379exe=`basename "${exe}"`380if [ -L "${_JAVAVM_PREFIX}/bin/${exe}" -a \381"`realpath "${_JAVAVM_PREFIX}/bin/${exe}" 2>/dev/null `" = \382"${_JAVAVM_PREFIX}/bin/javavm" ]; then383for JAVAVM in ${VMS}; do384if [ "${JAVAVM}" != "${VM}" ]; then385JAVAVM=`dirname "${JAVAVM}"`386JAVAVM=`dirname "${JAVAVM}"`387if [ -x "${JAVAVM}/bin/${exe}" -o \388-x "${JAVAVM}/jre/bin/${exe}" ]; then389continue 2390fi391fi392done393394rm "${_JAVAVM_PREFIX}/bin/${exe}"395fi396done397398# Remove the VM from the configuration file399ed "${_JAVAVM_CONF}" >/dev/null <<EOF400g|${1}|d401w402q403EOF404405# Remove configuration file if its size reached 0406if [ ! -s "${_JAVAVM_CONF}" ]; then407rm "${_JAVAVM_CONF}"408fi409410exit 0411}412413#414# Show the manual page for a Java VM415#416manualpageVM () {417# Check usage418if [ -z "${1}" ]; then419echo "Usage: ${_JAVAVM_PROG} name"420exit 1421fi422423# Look for an appropriate JAVA_HOME424_JAVAVM_SAVE_PROG=${_JAVAVM_PROG}425_JAVAVM_PROG="../man/man1/${1}.1"426setJavaHome427if [ $? != 0 ]; then428echo "${_JAVAVM_SAVE_PROG}: error: no suitable JavaVMs found" 1>&2429exit 1430fi431432# Run man(1)433MANPATH="${JAVA_HOME}/man:${MANPATH}"434export MANPATH435if [ "${LANG}" = "ja_JP.eucJP" -a -x "${_JAVAVM_PREFIX}/bin/jman" ]; then436setJavaOptions jman "`basename ${JAVA_HOME}`"437exec ${_JAVAVM_PREFIX}/bin/jman -S 1 ${_JAVAVM_OPTS} ${1}438else439setJavaOptions man "`basename ${JAVA_HOME}`"440exec man -S 1 ${_JAVAVM_OPTS} ${1}441fi442}443444#445# Set up an appropriate JAVA_HOME446#447setJavaHome() {448# Use JAVA_HOME if it's set, unless its set to %%PREFIX%%449if [ -n "${JAVA_HOME}" ]; then450if [ "`realpath "${JAVA_HOME}"`" != "`realpath "${_JAVAVM_PREFIX}"`" ]; then451if [ -f "${JAVA_HOME}/bin/${_JAVAVM_PROG}" ]; then452_JAVAVM_PROG_PATH="${JAVA_HOME}/bin"453return 0454elif [ -f "${JAVA_HOME}/jre/bin/${_JAVAVM_PROG}" ]; then455_JAVAVM_PROG_PATH="${JAVA_HOME}/jre/bin"456return 0457fi458fi459fi460461unset JAVA_HOME462463# Use bsd.java.mk to determine the VM to use if it exists unless464# JAVAVM_FALLBACK_ONLY is set465if [ -z "${JAVAVM_FALLBACK_ONLY}" ]; then466# Determine location of bsd.port.mk if it exists467_JAVAVM_PORTSDIR=468if [ -r /usr/share/mk/bsd.port.mk ]; then469_JAVAVM_PORTSDIR=`"${_JAVAVM_MAKE}" -f /usr/share/mk/bsd.port.mk -V PORTSDIR 2>/dev/null`470fi471472_JAVAVM_BSD_PORT_MK=473if [ -n "${_JAVAVM_PORTSDIR}" -a -r "${_JAVAVM_PORTSDIR}/Mk/bsd.port.mk" ]; then474_JAVAVM_BSD_PORT_MK="${_JAVAVM_PORTSDIR}/Mk/bsd.port.mk"475fi476477# If bsd.port.mk was found, use that to determine the VM to use.478if [ -n "${_JAVAVM_BSD_PORT_MK}" ]; then479JAVA_HOME=`"${_JAVAVM_MAKE}" -f "${_JAVAVM_BSD_PORT_MK}" -V JAVA_HOME USE_JAVA=yes 2>/dev/null`480if [ -n "${JAVA_HOME}" -a -f "${JAVA_HOME}/bin/${_JAVAVM_PROG}" ]; then481_JAVAVM_PROG_PATH="${JAVA_HOME}/bin"482return 0483elif [ -n "${JAVA_HOME}" -a \484-f "${JAVA_HOME}/jre/bin/${_JAVAVM_PROG}" ]; then485_JAVAVM_PROG_PATH="${JAVA_HOME}/jre/bin"486return 0487fi488fi489fi490491# Then try to make sure that ${_JAVAVM_CONF} exists492if [ ! -e "${_JAVAVM_CONF}" ]; then493echo "${_JAVAVM_PROG}: error: can't find ${_JAVAVM_CONF} configuration file" 1>&2494exit 1495fi496497# Allow comments in the ${_JAVAVM_CONF}498_JAVAVM_VMS=`sed -E 's|[[:space:]]*#.*||' < "${_JAVAVM_CONF}" | uniq 2>/dev/null`499500# Fix up JAVA_VERSION501if [ -n "${JAVA_VERSION}" ]; then502_JAVAVM_VERSION=503for version in ${JAVA_VERSION}; do504case "${version}" in5058+)506_JAVAVM_VERSION="${_JAVAVM_VERSION} 8 11 17 18 19 20 21"507;;50811+)509_JAVAVM_VERSION="${_JAVAVM_VERSION} 11 17 18 19 20 21"510;;51117+)512_JAVAVM_VERSION="${_JAVAVM_VERSION} 17 18 19 20 21"513;;51418+)515_JAVAVM_VERSION="${_JAVAVM_VERSION} 18 19 20 21"516;;51719+)518_JAVAVM_VERSION="${_JAVAVM_VERSION} 19 20 21"519;;52020+)521_JAVAVM_VERSION="${_JAVAVM_VERSION} 20 21"522;;52321+)524_JAVAVM_VERSION="${_JAVAVM_VERSION} 21"525;;526*)527_JAVAVM_VERSION="${_JAVAVM_VERSION} ${version}"528;;529esac530done531JAVA_VERSION=`echo "${_JAVAVM_VERSION}" | sort -n | uniq`532fi533534# Finally try to run one of the ${_JAVAVM_VMS}535for _JAVAVM_JAVAVM in ${_JAVAVM_VMS}; do536JAVA_HOME=`dirname "${_JAVAVM_JAVAVM}"`537JAVA_HOME=`dirname "${JAVA_HOME}"`538_JAVAVM_VM=`basename "${JAVA_HOME}"`539# Respect JAVA_VERSION540if [ -n "${JAVA_VERSION}" ]; then541_JAVAVM_VERSION=`echo ${_JAVAVM_VM} | \542sed -e 's|^[^0-9]*\([0-9]\)\.\([0-9]\)\.[0-9]$|\2|' \543-e 's|^[^0-9]*\([0-9][0-9]*\)$|\1|'`544for _JAVAVM_REQUESTED_VERSION in ${JAVA_VERSION}; do545if [ "${_JAVAVM_VERSION}" = "${_JAVAVM_REQUESTED_VERSION}" ]; then546_JAVAVM_VERSION=547break548fi549done550if [ -n "${_JAVAVM_VERSION}" ]; then551continue552fi553fi554# Respect JAVA_OS555if [ -n "${JAVA_OS}" ]; then556_JAVAVM_OS=557case "${_JAVAVM_VM}" in558openjdk*)559_JAVAVM_OS=native560;;561linux*)562_JAVAVM_OS=linux563;;564esac565for _JAVAVM_REQUESTED_OS in ${JAVA_OS}; do566if [ "${_JAVAVM_OS}" = "${_JAVAVM_REQUESTED_OS}" ]; then567_JAVAVM_OS=568break569fi570done571if [ -n "${_JAVAVM_OS}" ]; then572continue573fi574fi575# Respect JAVA_VENDOR576if [ -n "${JAVA_VENDOR}" ]; then577_JAVAVM_VENDOR=578case "${_JAVAVM_VM}" in579openjdk*)580_JAVAVM_VENDOR=openjdk581;;582linux-sun*)583_JAVAVM_VENDOR=sun584;;585linux-oracle*)586_JAVAVM_VENDOR=oracle587;;588esac589for _JAVAVM_REQUESTED_VENDOR in ${JAVA_VENDOR}; do590if [ "${_JAVAVM_VENDOR}" = "${_JAVAVM_REQUESTED_VENDOR}" ]; then591_JAVAVM_VENDOR=592break593fi594done595if [ -n "${_JAVAVM_VENDOR}" ]; then596continue597fi598fi599# Check if the command exists600if [ -n "${JAVA_HOME}" -a -f "${JAVA_HOME}/bin/${_JAVAVM_PROG}" ]; then601_JAVAVM_PROG_PATH="${JAVA_HOME}/bin"602return 0603elif [ -n "${JAVA_HOME}" -a \604-f "${JAVA_HOME}/jre/bin/${_JAVAVM_PROG}" ]; then605_JAVAVM_PROG_PATH="${JAVA_HOME}/jre/bin"606return 0607fi608done609610unset JAVA_HOME611612return 1613}614615# Check for an alias and call the appropriate function.616case "${_JAVAVM_PROG}" in617registervm )618registerVM "${1}"619;;620unregistervm )621unregisterVM "${1}"622;;623checkvms )624checkVMs625;;626manvm )627manualpageVM "${1}"628;;629esac630631# Main ()632633# Backwards compatibility634if [ "${_JAVAVM_PROG}" = "javavm" ]; then635echo "${_JAVAVM_PROG}: warning: The use of 'javavm' as a synonym for 'java' is deprecated" 1>&2636_JAVAVM_PROG=java637fi638639# Initialise options640if [ -r "${_JAVAVM_OPTS_CONF}" ]; then641. "${_JAVAVM_OPTS_CONF}"642fi643_JAVAVM_OPTS=644645# Determine JAVA_HOME646setJavaHome647if [ $? != 0 ]; then648echo "${_JAVAVM_PROG}: error: no suitable JavaVMs found" 1>&2649exit 1650fi651652# Set up the options and run the command653if [ -x "${_JAVAVM_PROG_PATH}/${_JAVAVM_PROG}" ]; then654setJavaOptions "${_JAVAVM_PROG}" "`basename ${JAVA_HOME}`"655export JAVA_HOME656tryJavaCommand "${_JAVAVM_PROG_PATH}/${_JAVAVM_PROG}" ${_JAVAVM_OPTS} "${@}"657fi658659echo "${_JAVAVM_PROG}: error: no suitable JavaVMs found" 1>&2660exit 1661662663