You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by rt...@apache.org on 2019/10/25 15:20:45 UTC
svn commit: r36496 [2/3] - /dev/netbeans/netbeans/11.2-vc1/
Added: dev/netbeans/netbeans/11.2-vc1/Apache-NetBeans-11.2-bin-linux-x64.sh
==============================================================================
--- dev/netbeans/netbeans/11.2-vc1/Apache-NetBeans-11.2-bin-linux-x64.sh (added)
+++ dev/netbeans/netbeans/11.2-vc1/Apache-NetBeans-11.2-bin-linux-x64.sh Fri Oct 25 15:20:45 2019
@@ -0,0 +1,701486 @@
+#!/bin/sh
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+ARG_JAVAHOME="--javahome"
+ARG_VERBOSE="--verbose"
+ARG_OUTPUT="--output"
+ARG_EXTRACT="--extract"
+ARG_JAVA_ARG_PREFIX="-J"
+ARG_TEMPDIR="--tempdir"
+ARG_CLASSPATHA="--classpath-append"
+ARG_CLASSPATHP="--classpath-prepend"
+ARG_HELP="--help"
+ARG_SILENT="--silent"
+ARG_NOSPACECHECK="--nospacecheck"
+ARG_LOCALE="--locale"
+
+USE_DEBUG_OUTPUT=0
+PERFORM_FREE_SPACE_CHECK=1
+SILENT_MODE=0
+EXTRACT_ONLY=0
+SHOW_HELP_ONLY=0
+LOCAL_OVERRIDDEN=0
+APPEND_CP=
+PREPEND_CP=
+LAUNCHER_APP_ARGUMENTS=
+LAUNCHER_JVM_ARGUMENTS=
+ERROR_OK=0
+ERROR_TEMP_DIRECTORY=2
+ERROR_TEST_JVM_FILE=3
+ERROR_JVM_NOT_FOUND=4
+ERROR_JVM_UNCOMPATIBLE=5
+ERROR_EXTRACT_ONLY=6
+ERROR_INPUTOUPUT=7
+ERROR_FREESPACE=8
+ERROR_INTEGRITY=9
+ERROR_MISSING_RESOURCES=10
+ERROR_JVM_EXTRACTION=11
+ERROR_JVM_UNPACKING=12
+ERROR_VERIFY_BUNDLED_JVM=13
+
+VERIFY_OK=1
+VERIFY_NOJAVA=2
+VERIFY_UNCOMPATIBLE=3
+
+MSG_ERROR_JVM_NOT_FOUND="nlu.jvm.notfoundmessage"
+MSG_ERROR_USER_ERROR="nlu.jvm.usererror"
+MSG_ERROR_JVM_UNCOMPATIBLE="nlu.jvm.uncompatible"
+MSG_ERROR_INTEGRITY="nlu.integrity"
+MSG_ERROR_FREESPACE="nlu.freespace"
+MSG_ERROP_MISSING_RESOURCE="nlu.missing.external.resource"
+MSG_ERROR_TMPDIR="nlu.cannot.create.tmpdir"
+
+MSG_ERROR_EXTRACT_JVM="nlu.cannot.extract.bundled.jvm"
+MSG_ERROR_UNPACK_JVM_FILE="nlu.cannot.unpack.jvm.file"
+MSG_ERROR_VERIFY_BUNDLED_JVM="nlu.error.verify.bundled.jvm"
+
+MSG_RUNNING="nlu.running"
+MSG_STARTING="nlu.starting"
+MSG_EXTRACTING="nlu.extracting"
+MSG_PREPARE_JVM="nlu.prepare.jvm"
+MSG_JVM_SEARCH="nlu.jvm.search"
+MSG_ARG_JAVAHOME="nlu.arg.javahome"
+MSG_ARG_VERBOSE="nlu.arg.verbose"
+MSG_ARG_OUTPUT="nlu.arg.output"
+MSG_ARG_EXTRACT="nlu.arg.extract"
+MSG_ARG_TEMPDIR="nlu.arg.tempdir"
+MSG_ARG_CPA="nlu.arg.cpa"
+MSG_ARG_CPP="nlu.arg.cpp"
+MSG_ARG_DISABLE_FREE_SPACE_CHECK="nlu.arg.disable.space.check"
+MSG_ARG_LOCALE="nlu.arg.locale"
+MSG_ARG_SILENT="nlu.arg.silent"
+MSG_ARG_HELP="nlu.arg.help"
+MSG_USAGE="nlu.msg.usage"
+
+isSymlink=
+
+entryPoint() {
+ initSymlinkArgument
+ CURRENT_DIRECTORY=`pwd`
+ LAUNCHER_NAME=`echo $0`
+ parseCommandLineArguments "$@"
+ initializeVariables
+ setLauncherLocale
+ debugLauncherArguments "$@"
+ if [ 1 -eq $SHOW_HELP_ONLY ] ; then
+ showHelp
+ fi
+
+ message "$MSG_STARTING"
+ createTempDirectory
+ checkFreeSpace "$TOTAL_BUNDLED_FILES_SIZE" "$LAUNCHER_EXTRACT_DIR"
+
+ extractJVMData
+ if [ 0 -eq $EXTRACT_ONLY ] ; then
+ searchJava
+ fi
+
+ extractBundledData
+ verifyIntegrity
+
+ if [ 0 -eq $EXTRACT_ONLY ] ; then
+ executeMainClass
+ else
+ exitProgram $ERROR_OK
+ fi
+}
+
+initSymlinkArgument() {
+ testSymlinkErr=`test -L / 2>&1 > /dev/null`
+ if [ -z "$testSymlinkErr" ] ; then
+ isSymlink=-L
+ else
+ isSymlink=-h
+ fi
+}
+
+debugLauncherArguments() {
+ debug "Launcher Command : $0"
+ argCounter=1
+ while [ $# != 0 ] ; do
+ debug "... argument [$argCounter] = $1"
+ argCounter=`expr "$argCounter" + 1`
+ shift
+ done
+}
+isLauncherCommandArgument() {
+ case "$1" in
+ $ARG_VERBOSE | $ARG_NOSPACECHECK | $ARG_OUTPUT | $ARG_HELP | $ARG_JAVAHOME | $ARG_TEMPDIR | $ARG_EXTRACT | $ARG_SILENT | $ARG_LOCALE | $ARG_CLASSPATHP | $ARG_CLASSPATHA)
+ echo 1
+ ;;
+ *)
+ echo 0
+ ;;
+ esac
+}
+
+parseCommandLineArguments() {
+ while [ $# != 0 ]
+ do
+ case "$1" in
+ $ARG_VERBOSE)
+ USE_DEBUG_OUTPUT=1;;
+ $ARG_NOSPACECHECK)
+ PERFORM_FREE_SPACE_CHECK=0
+ parseJvmAppArgument "$1"
+ ;;
+ $ARG_OUTPUT)
+ if [ -n "$2" ] ; then
+ OUTPUT_FILE="$2"
+ if [ -f "$OUTPUT_FILE" ] ; then
+ # clear output file first
+ rm -f "$OUTPUT_FILE" > /dev/null 2>&1
+ touch "$OUTPUT_FILE"
+ fi
+ shift
+ fi
+ ;;
+ $ARG_HELP)
+ SHOW_HELP_ONLY=1
+ ;;
+ $ARG_JAVAHOME)
+ if [ -n "$2" ] ; then
+ LAUNCHER_JAVA="$2"
+ shift
+ fi
+ ;;
+ $ARG_TEMPDIR)
+ if [ -n "$2" ] ; then
+ LAUNCHER_JVM_TEMP_DIR="$2"
+ shift
+ fi
+ ;;
+ $ARG_EXTRACT)
+ EXTRACT_ONLY=1
+ if [ -n "$2" ] && [ `isLauncherCommandArgument "$2"` -eq 0 ] ; then
+ LAUNCHER_EXTRACT_DIR="$2"
+ shift
+ else
+ LAUNCHER_EXTRACT_DIR="$CURRENT_DIRECTORY"
+ fi
+ ;;
+ $ARG_SILENT)
+ SILENT_MODE=1
+ parseJvmAppArgument "$1"
+ ;;
+ $ARG_LOCALE)
+ SYSTEM_LOCALE="$2"
+ LOCAL_OVERRIDDEN=1
+ parseJvmAppArgument "$1"
+ ;;
+ $ARG_CLASSPATHP)
+ if [ -n "$2" ] ; then
+ if [ -z "$PREPEND_CP" ] ; then
+ PREPEND_CP="$2"
+ else
+ PREPEND_CP="$2":"$PREPEND_CP"
+ fi
+ shift
+ fi
+ ;;
+ $ARG_CLASSPATHA)
+ if [ -n "$2" ] ; then
+ if [ -z "$APPEND_CP" ] ; then
+ APPEND_CP="$2"
+ else
+ APPEND_CP="$APPEND_CP":"$2"
+ fi
+ shift
+ fi
+ ;;
+
+ *)
+ parseJvmAppArgument "$1"
+ esac
+ shift
+ done
+}
+
+setLauncherLocale() {
+ if [ 0 -eq $LOCAL_OVERRIDDEN ] ; then
+ SYSTEM_LOCALE="$LANG"
+ debug "Setting initial launcher locale from the system : $SYSTEM_LOCALE"
+ else
+ debug "Setting initial launcher locale using command-line argument : $SYSTEM_LOCALE"
+ fi
+
+ LAUNCHER_LOCALE="$SYSTEM_LOCALE"
+
+ if [ -n "$LAUNCHER_LOCALE" ] ; then
+ # check if $LAUNCHER_LOCALE is in UTF-8
+ if [ 0 -eq $LOCAL_OVERRIDDEN ] ; then
+ removeUTFsuffix=`echo "$LAUNCHER_LOCALE" | sed "s/\.UTF-8//"`
+ isUTF=`ifEquals "$removeUTFsuffix" "$LAUNCHER_LOCALE"`
+ if [ 1 -eq $isUTF ] ; then
+ #set launcher locale to the default if the system locale name doesn`t containt UTF-8
+ LAUNCHER_LOCALE=""
+ fi
+ fi
+
+ localeChanged=0
+ localeCounter=0
+ while [ $localeCounter -lt $LAUNCHER_LOCALES_NUMBER ] ; do
+ localeVar="$""LAUNCHER_LOCALE_NAME_$localeCounter"
+ arg=`eval "echo \"$localeVar\""`
+ if [ -n "$arg" ] ; then
+ # if not a default locale
+ # $comp length shows the difference between $SYSTEM_LOCALE and $arg
+ # the less the length the less the difference and more coincedence
+
+ comp=`echo "$SYSTEM_LOCALE" | sed -e "s/^${arg}//"`
+ length1=`getStringLength "$comp"`
+ length2=`getStringLength "$LAUNCHER_LOCALE"`
+ if [ $length1 -lt $length2 ] ; then
+ # more coincidence between $SYSTEM_LOCALE and $arg than between $SYSTEM_LOCALE and $arg
+ compare=`ifLess "$comp" "$LAUNCHER_LOCALE"`
+
+ if [ 1 -eq $compare ] ; then
+ LAUNCHER_LOCALE="$arg"
+ localeChanged=1
+ debug "... setting locale to $arg"
+ fi
+ if [ -z "$comp" ] ; then
+ # means that $SYSTEM_LOCALE equals to $arg
+ break
+ fi
+ fi
+ else
+ comp="$SYSTEM_LOCALE"
+ fi
+ localeCounter=`expr "$localeCounter" + 1`
+ done
+ if [ $localeChanged -eq 0 ] ; then
+ #set default
+ LAUNCHER_LOCALE=""
+ fi
+ fi
+
+
+ debug "Final Launcher Locale : $LAUNCHER_LOCALE"
+}
+
+escapeBackslash() {
+ echo "$1" | sed "s/\\\/\\\\\\\/g"
+}
+
+ifLess() {
+ arg1=`escapeBackslash "$1"`
+ arg2=`escapeBackslash "$2"`
+ compare=`awk 'END { if ( a < b ) { print 1 } else { print 0 } }' a="$arg1" b="$arg2" < /dev/null`
+ echo $compare
+}
+
+formatVersion() {
+ formatted=`echo "$1" | sed "s/-ea//g;s/-rc[0-9]*//g;s/-beta[0-9]*//g;s/-preview[0-9]*//g;s/-dp[0-9]*//g;s/-alpha[0-9]*//g;s/-fcs//g;s/_/./g;s/-/\./g"`
+ formatted=`echo "$formatted" | sed "s/^\(\([0-9][0-9]*\)\.\([0-9][0-9]*\)\.\([0-9][0-9]*\)\)\.b\([0-9][0-9]*\)/\1\.0\.\5/g"`
+ formatted=`echo "$formatted" | sed "s/\.b\([0-9][0-9]*\)/\.\1/g"`
+ echo "$formatted"
+
+}
+
+compareVersions() {
+ current1=`formatVersion "$1"`
+ current2=`formatVersion "$2"`
+ compresult=
+ #0 - equals
+ #-1 - less
+ #1 - more
+
+ while [ -z "$compresult" ] ; do
+ value1=`echo "$current1" | sed "s/\..*//g"`
+ value2=`echo "$current2" | sed "s/\..*//g"`
+
+
+ removeDots1=`echo "$current1" | sed "s/\.//g"`
+ removeDots2=`echo "$current2" | sed "s/\.//g"`
+
+ if [ 1 -eq `ifEquals "$current1" "$removeDots1"` ] ; then
+ remainder1=""
+ else
+ remainder1=`echo "$current1" | sed "s/^$value1\.//g"`
+ fi
+ if [ 1 -eq `ifEquals "$current2" "$removeDots2"` ] ; then
+ remainder2=""
+ else
+ remainder2=`echo "$current2" | sed "s/^$value2\.//g"`
+ fi
+
+ current1="$remainder1"
+ current2="$remainder2"
+
+ if [ -z "$value1" ] || [ 0 -eq `ifNumber "$value1"` ] ; then
+ value1=0
+ fi
+ if [ -z "$value2" ] || [ 0 -eq `ifNumber "$value2"` ] ; then
+ value2=0
+ fi
+ if [ "$value1" -gt "$value2" ] ; then
+ compresult=1
+ break
+ elif [ "$value2" -gt "$value1" ] ; then
+ compresult=-1
+ break
+ fi
+
+ if [ -z "$current1" ] && [ -z "$current2" ] ; then
+ compresult=0
+ break
+ fi
+ done
+ echo $compresult
+}
+
+ifVersionLess() {
+ compareResult=`compareVersions "$1" "$2"`
+ if [ -1 -eq $compareResult ] ; then
+ echo 1
+ else
+ echo 0
+ fi
+}
+
+ifVersionGreater() {
+ compareResult=`compareVersions "$1" "$2"`
+ if [ 1 -eq $compareResult ] ; then
+ echo 1
+ else
+ echo 0
+ fi
+}
+
+ifGreater() {
+ arg1=`escapeBackslash "$1"`
+ arg2=`escapeBackslash "$2"`
+
+ compare=`awk 'END { if ( a > b ) { print 1 } else { print 0 } }' a="$arg1" b="$arg2" < /dev/null`
+ echo $compare
+}
+
+ifEquals() {
+ arg1=`escapeBackslash "$1"`
+ arg2=`escapeBackslash "$2"`
+
+ compare=`awk 'END { if ( a == b ) { print 1 } else { print 0 } }' a="$arg1" b="$arg2" < /dev/null`
+ echo $compare
+}
+
+ifNumber()
+{
+ result=0
+ if [ -n "$1" ] ; then
+ num=`echo "$1" | sed 's/[0-9]*//g' 2>/dev/null`
+ if [ -z "$num" ] ; then
+ result=1
+ fi
+ fi
+ echo $result
+}
+getStringLength() {
+ strlength=`awk 'END{ print length(a) }' a="$1" < /dev/null`
+ echo $strlength
+}
+
+resolveRelativity() {
+ if [ 1 -eq `ifPathRelative "$1"` ] ; then
+ echo "$CURRENT_DIRECTORY"/"$1" | sed 's/\"//g' 2>/dev/null
+ else
+ echo "$1"
+ fi
+}
+
+ifPathRelative() {
+ param="$1"
+ removeRoot=`echo "$param" | sed "s/^\\\///" 2>/dev/null`
+ echo `ifEquals "$param" "$removeRoot"` 2>/dev/null
+}
+
+
+initializeVariables() {
+ debug "Launcher name is $LAUNCHER_NAME"
+ systemName=`uname`
+ debug "System name is $systemName"
+ isMacOSX=`ifEquals "$systemName" "Darwin"`
+ isSolaris=`ifEquals "$systemName" "SunOS"`
+ if [ 1 -eq $isSolaris ] ; then
+ POSSIBLE_JAVA_EXE_SUFFIX="$POSSIBLE_JAVA_EXE_SUFFIX_SOLARIS"
+ else
+ POSSIBLE_JAVA_EXE_SUFFIX="$POSSIBLE_JAVA_EXE_SUFFIX_COMMON"
+ fi
+ if [ 1 -eq $isMacOSX ] ; then
+ # set default userdir and cachedir on MacOS
+ DEFAULT_USERDIR_ROOT="${HOME}/Library/Application Support/NetBeans"
+ DEFAULT_CACHEDIR_ROOT="${HOME}/Library/Caches/NetBeans"
+ else
+ # set default userdir and cachedir on unix systems
+ DEFAULT_USERDIR_ROOT=${HOME}/.netbeans
+ DEFAULT_CACHEDIR_ROOT=${HOME}/.cache/netbeans
+ fi
+ systemInfo=`uname -a 2>/dev/null`
+ debug "System Information:"
+ debug "$systemInfo"
+ debug ""
+ DEFAULT_DISK_BLOCK_SIZE=512
+ LAUNCHER_TRACKING_SIZE=$LAUNCHER_STUB_SIZE
+ LAUNCHER_TRACKING_SIZE_BYTES=`expr "$LAUNCHER_STUB_SIZE" \* "$FILE_BLOCK_SIZE"`
+ getLauncherLocation
+}
+
+parseJvmAppArgument() {
+ param="$1"
+ arg=`echo "$param" | sed "s/^-J//"`
+ argEscaped=`escapeString "$arg"`
+
+ if [ "$param" = "$arg" ] ; then
+ LAUNCHER_APP_ARGUMENTS="$LAUNCHER_APP_ARGUMENTS $argEscaped"
+ else
+ LAUNCHER_JVM_ARGUMENTS="$LAUNCHER_JVM_ARGUMENTS $argEscaped"
+ fi
+}
+
+getLauncherLocation() {
+ # if file path is relative then prepend it with current directory
+ LAUNCHER_FULL_PATH=`resolveRelativity "$LAUNCHER_NAME"`
+ debug "... normalizing full path"
+ LAUNCHER_FULL_PATH=`normalizePath "$LAUNCHER_FULL_PATH"`
+ debug "... getting dirname"
+ LAUNCHER_DIR=`dirname "$LAUNCHER_FULL_PATH"`
+ debug "Full launcher path = $LAUNCHER_FULL_PATH"
+ debug "Launcher directory = $LAUNCHER_DIR"
+}
+
+getLauncherSize() {
+ lsOutput=`ls -l --block-size=1 "$LAUNCHER_FULL_PATH" 2>/dev/null`
+ if [ $? -ne 0 ] ; then
+ #default block size
+ lsOutput=`ls -l "$LAUNCHER_FULL_PATH" 2>/dev/null`
+ fi
+ echo "$lsOutput" | awk ' { print $5 }' 2>/dev/null
+}
+
+verifyIntegrity() {
+ size=`getLauncherSize`
+ extractedSize=$LAUNCHER_TRACKING_SIZE_BYTES
+ if [ 1 -eq `ifNumber "$size"` ] ; then
+ debug "... check integrity"
+ debug "... minimal size : $extractedSize"
+ debug "... real size : $size"
+
+ if [ $size -lt $extractedSize ] ; then
+ debug "... integration check FAILED"
+ message "$MSG_ERROR_INTEGRITY" `normalizePath "$LAUNCHER_FULL_PATH"`
+ exitProgram $ERROR_INTEGRITY
+ fi
+ debug "... integration check OK"
+ fi
+}
+showHelp() {
+ msg0=`message "$MSG_USAGE"`
+ msg1=`message "$MSG_ARG_JAVAHOME $ARG_JAVAHOME"`
+ msg2=`message "$MSG_ARG_TEMPDIR $ARG_TEMPDIR"`
+ msg3=`message "$MSG_ARG_EXTRACT $ARG_EXTRACT"`
+ msg4=`message "$MSG_ARG_OUTPUT $ARG_OUTPUT"`
+ msg5=`message "$MSG_ARG_VERBOSE $ARG_VERBOSE"`
+ msg6=`message "$MSG_ARG_CPA $ARG_CLASSPATHA"`
+ msg7=`message "$MSG_ARG_CPP $ARG_CLASSPATHP"`
+ msg8=`message "$MSG_ARG_DISABLE_FREE_SPACE_CHECK $ARG_NOSPACECHECK"`
+ msg9=`message "$MSG_ARG_LOCALE $ARG_LOCALE"`
+ msg10=`message "$MSG_ARG_SILENT $ARG_SILENT"`
+ msg11=`message "$MSG_ARG_HELP $ARG_HELP"`
+ out "$msg0"
+ out "$msg1"
+ out "$msg2"
+ out "$msg3"
+ out "$msg4"
+ out "$msg5"
+ out "$msg6"
+ out "$msg7"
+ out "$msg8"
+ out "$msg9"
+ out "$msg10"
+ out "$msg11"
+ exitProgram $ERROR_OK
+}
+
+exitProgram() {
+ if [ 0 -eq $EXTRACT_ONLY ] ; then
+ if [ -n "$LAUNCHER_EXTRACT_DIR" ] && [ -d "$LAUNCHER_EXTRACT_DIR" ]; then
+ debug "Removing directory $LAUNCHER_EXTRACT_DIR"
+ rm -rf "$LAUNCHER_EXTRACT_DIR" > /dev/null 2>&1
+ fi
+ fi
+ debug "exitCode = $1"
+ exit $1
+}
+
+debug() {
+ if [ $USE_DEBUG_OUTPUT -eq 1 ] ; then
+ timestamp=`date '+%Y-%m-%d %H:%M:%S'`
+ out "[$timestamp]> $1"
+ fi
+}
+
+out() {
+
+ if [ -n "$OUTPUT_FILE" ] ; then
+ printf "%s\n" "$@" >> "$OUTPUT_FILE"
+ elif [ 0 -eq $SILENT_MODE ] ; then
+ printf "%s\n" "$@"
+ fi
+}
+
+message() {
+ msg=`getMessage "$@"`
+ out "$msg"
+}
+
+
+createTempDirectory() {
+ if [ 0 -eq $EXTRACT_ONLY ] ; then
+ if [ -z "$LAUNCHER_JVM_TEMP_DIR" ] ; then
+ if [ 0 -eq $EXTRACT_ONLY ] ; then
+ if [ -n "$TEMP" ] && [ -d "$TEMP" ] ; then
+ debug "TEMP var is used : $TEMP"
+ LAUNCHER_JVM_TEMP_DIR="$TEMP"
+ elif [ -n "$TMP" ] && [ -d "$TMP" ] ; then
+ debug "TMP var is used : $TMP"
+ LAUNCHER_JVM_TEMP_DIR="$TMP"
+ elif [ -n "$TEMPDIR" ] && [ -d "$TEMPDIR" ] ; then
+ debug "TEMPDIR var is used : $TEMPDIR"
+ LAUNCHER_JVM_TEMP_DIR="$TEMPDIR"
+ elif [ -d "/tmp" ] ; then
+ debug "Using /tmp for temp"
+ LAUNCHER_JVM_TEMP_DIR="/tmp"
+ else
+ debug "Using home dir for temp"
+ LAUNCHER_JVM_TEMP_DIR="$HOME"
+ fi
+ else
+ #extract only : to the curdir
+ LAUNCHER_JVM_TEMP_DIR="$CURRENT_DIRECTORY"
+ fi
+ fi
+ # if temp dir does not exist then try to create it
+ if [ ! -d "$LAUNCHER_JVM_TEMP_DIR" ] ; then
+ mkdir -p "$LAUNCHER_JVM_TEMP_DIR" > /dev/null 2>&1
+ if [ $? -ne 0 ] ; then
+ message "$MSG_ERROR_TMPDIR" "$LAUNCHER_JVM_TEMP_DIR"
+ exitProgram $ERROR_TEMP_DIRECTORY
+ fi
+ fi
+ debug "Launcher TEMP ROOT = $LAUNCHER_JVM_TEMP_DIR"
+ subDir=`date '+%u%m%M%S'`
+ subDir=`echo ".nbi-$subDir.tmp"`
+ LAUNCHER_EXTRACT_DIR="$LAUNCHER_JVM_TEMP_DIR/$subDir"
+ else
+ #extracting to the $LAUNCHER_EXTRACT_DIR
+ debug "Launcher Extracting ROOT = $LAUNCHER_EXTRACT_DIR"
+ fi
+
+ if [ ! -d "$LAUNCHER_EXTRACT_DIR" ] ; then
+ mkdir -p "$LAUNCHER_EXTRACT_DIR" > /dev/null 2>&1
+ if [ $? -ne 0 ] ; then
+ message "$MSG_ERROR_TMPDIR" "$LAUNCHER_EXTRACT_DIR"
+ exitProgram $ERROR_TEMP_DIRECTORY
+ fi
+ else
+ debug "$LAUNCHER_EXTRACT_DIR is directory and exist"
+ fi
+ debug "Using directory $LAUNCHER_EXTRACT_DIR for extracting data"
+}
+extractJVMData() {
+ debug "Extracting testJVM file data..."
+ extractTestJVMFile
+ debug "Extracting bundled JVMs ..."
+ extractJVMFiles
+ debug "Extracting JVM data done"
+}
+extractBundledData() {
+ message "$MSG_EXTRACTING"
+ debug "Extracting bundled jars data..."
+ extractJars
+ debug "Extracting other data..."
+ extractOtherData
+ debug "Extracting bundled data finished..."
+}
+
+setTestJVMClasspath() {
+ testjvmname=`basename "$TEST_JVM_PATH"`
+ removeClassSuffix=`echo "$testjvmname" | sed 's/\.class$//'`
+ notClassFile=`ifEquals "$testjvmname" "$removeClassSuffix"`
+
+ if [ -d "$TEST_JVM_PATH" ] ; then
+ TEST_JVM_CLASSPATH="$TEST_JVM_PATH"
+ debug "... testJVM path is a directory"
+ elif [ $isSymlink "$TEST_JVM_PATH" ] && [ $notClassFile -eq 1 ] ; then
+ TEST_JVM_CLASSPATH="$TEST_JVM_PATH"
+ debug "... testJVM path is a link but not a .class file"
+ else
+ if [ $notClassFile -eq 1 ] ; then
+ debug "... testJVM path is a jar/zip file"
+ TEST_JVM_CLASSPATH="$TEST_JVM_PATH"
+ else
+ debug "... testJVM path is a .class file"
+ TEST_JVM_CLASSPATH=`dirname "$TEST_JVM_PATH"`
+ fi
+ fi
+ debug "... testJVM classpath is : $TEST_JVM_CLASSPATH"
+}
+
+extractTestJVMFile() {
+ TEST_JVM_PATH=`resolveResourcePath "TEST_JVM_FILE"`
+ extractResource "TEST_JVM_FILE"
+ setTestJVMClasspath
+
+}
+
+installJVM() {
+ message "$MSG_PREPARE_JVM"
+ jvmFile=`resolveRelativity "$1"`
+ jvmDir=`dirname "$jvmFile"`/_jvm
+ debug "JVM Directory : $jvmDir"
+ mkdir "$jvmDir" > /dev/null 2>&1
+ if [ $? != 0 ] ; then
+ message "$MSG_ERROR_EXTRACT_JVM"
+ exitProgram $ERROR_JVM_EXTRACTION
+ fi
+ chmod +x "$jvmFile" > /dev/null 2>&1
+ jvmFileEscaped=`escapeString "$jvmFile"`
+ jvmDirEscaped=`escapeString "$jvmDir"`
+ cd "$jvmDir"
+ runCommand "$jvmFileEscaped"
+ ERROR_CODE=$?
+
+ cd "$CURRENT_DIRECTORY"
+
+ if [ $ERROR_CODE != 0 ] ; then
+ message "$MSG_ERROR_EXTRACT_JVM"
+ exitProgram $ERROR_JVM_EXTRACTION
+ fi
+
+ files=`find "$jvmDir" -name "*.jar.pack.gz" -print`
+ debug "Packed files : $files"
+ f="$files"
+ fileCounter=1;
+ while [ -n "$f" ] ; do
+ f=`echo "$files" | sed -n "${fileCounter}p" 2>/dev/null`
+ debug "... next file is $f"
+ if [ -n "$f" ] ; then
+ debug "... packed file = $f"
+ unpacked=`echo "$f" | sed s/\.pack\.gz//`
+ debug "... unpacked file = $unpacked"
+ fEsc=`escapeString "$f"`
+ uEsc=`escapeString "$unpacked"`
+ cmd="$jvmDirEscaped/bin/unpack200 -r $fEsc $uEsc"
+ runCommand "$cmd"
+ if [ $? != 0 ] ; then
+ message "$MSG_ERROR_UNPACK_JVM_FILE" "$f"
+ exitProgram $ERROR_JVM_UNPACKING
+ fi
+ fi
+ fileCounter=`expr "$fileCounter" + 1`
+ done
+
+ verifyJVM "$jvmDir"
+ if [ -z "$LAUNCHER_JAVA_EXE" ] ; then
+ message "$MSG_ERROR_VERIFY_BUNDLED_JVM"
+ exitProgram $ERROR_VERIFY_BUNDLED_JVM
+ fi
+}
+
+resolveResourcePath() {
+ resourcePrefix="$1"
+ resourceVar="$""$resourcePrefix""_PATH"
+ resourceName=`eval "echo \"$resourceVar\""`
+ resourcePath=`resolveString "$resourceName"`
+ echo "$resourcePath"
+
+}
+
+resolveResourceSize() {
+ resourcePrefix="$1"
+ resourceVar="$""$resourcePrefix""_SIZE"
+ resourceSize=`eval "echo \"$resourceVar\""`
+ echo "$resourceSize"
+}
+
+resolveResourceMd5() {
+ resourcePrefix="$1"
+ resourceVar="$""$resourcePrefix""_MD5"
+ resourceMd5=`eval "echo \"$resourceVar\""`
+ echo "$resourceMd5"
+}
+
+resolveResourceType() {
+ resourcePrefix="$1"
+ resourceVar="$""$resourcePrefix""_TYPE"
+ resourceType=`eval "echo \"$resourceVar\""`
+ echo "$resourceType"
+}
+
+extractResource() {
+ debug "... extracting resource"
+ resourcePrefix="$1"
+ debug "... resource prefix id=$resourcePrefix"
+ resourceType=`resolveResourceType "$resourcePrefix"`
+ debug "... resource type=$resourceType"
+ if [ $resourceType -eq 0 ] ; then
+ resourceSize=`resolveResourceSize "$resourcePrefix"`
+ debug "... resource size=$resourceSize"
+ resourcePath=`resolveResourcePath "$resourcePrefix"`
+ debug "... resource path=$resourcePath"
+ extractFile "$resourceSize" "$resourcePath"
+ resourceMd5=`resolveResourceMd5 "$resourcePrefix"`
+ debug "... resource md5=$resourceMd5"
+ checkMd5 "$resourcePath" "$resourceMd5"
+ debug "... done"
+ fi
+ debug "... extracting resource finished"
+
+}
+
+extractJars() {
+ counter=0
+ while [ $counter -lt $JARS_NUMBER ] ; do
+ extractResource "JAR_$counter"
+ counter=`expr "$counter" + 1`
+ done
+}
+
+extractOtherData() {
+ counter=0
+ while [ $counter -lt $OTHER_RESOURCES_NUMBER ] ; do
+ extractResource "OTHER_RESOURCE_$counter"
+ counter=`expr "$counter" + 1`
+ done
+}
+
+extractJVMFiles() {
+ javaCounter=0
+ debug "... total number of JVM files : $JAVA_LOCATION_NUMBER"
+ while [ $javaCounter -lt $JAVA_LOCATION_NUMBER ] ; do
+ extractResource "JAVA_LOCATION_$javaCounter"
+ javaCounter=`expr "$javaCounter" + 1`
+ done
+}
+
+
+processJarsClasspath() {
+ JARS_CLASSPATH=""
+ jarsCounter=0
+ while [ $jarsCounter -lt $JARS_NUMBER ] ; do
+ resolvedFile=`resolveResourcePath "JAR_$jarsCounter"`
+ debug "... adding jar to classpath : $resolvedFile"
+ if [ ! -f "$resolvedFile" ] && [ ! -d "$resolvedFile" ] && [ ! $isSymlink "$resolvedFile" ] ; then
+ message "$MSG_ERROP_MISSING_RESOURCE" "$resolvedFile"
+ exitProgram $ERROR_MISSING_RESOURCES
+ else
+ if [ -z "$JARS_CLASSPATH" ] ; then
+ JARS_CLASSPATH="$resolvedFile"
+ else
+ JARS_CLASSPATH="$JARS_CLASSPATH":"$resolvedFile"
+ fi
+ fi
+
+ jarsCounter=`expr "$jarsCounter" + 1`
+ done
+ debug "Jars classpath : $JARS_CLASSPATH"
+}
+
+extractFile() {
+ start=$LAUNCHER_TRACKING_SIZE
+ size=$1 #absolute size
+ name="$2" #relative part
+ fullBlocks=`expr $size / $FILE_BLOCK_SIZE`
+ fullBlocksSize=`expr "$FILE_BLOCK_SIZE" \* "$fullBlocks"`
+ oneBlocks=`expr $size - $fullBlocksSize`
+ oneBlocksStart=`expr "$start" + "$fullBlocks"`
+
+ checkFreeSpace $size "$name"
+ LAUNCHER_TRACKING_SIZE_BYTES=`expr "$LAUNCHER_TRACKING_SIZE" \* "$FILE_BLOCK_SIZE"`
+
+ if [ 0 -eq $diskSpaceCheck ] ; then
+ dir=`dirname "$name"`
+ message "$MSG_ERROR_FREESPACE" "$size" "$ARG_TEMPDIR"
+ exitProgram $ERROR_FREESPACE
+ fi
+
+ if [ 0 -lt "$fullBlocks" ] ; then
+ # file is larger than FILE_BLOCK_SIZE
+ dd if="$LAUNCHER_FULL_PATH" of="$name" \
+ bs="$FILE_BLOCK_SIZE" count="$fullBlocks" skip="$start"\
+ > /dev/null 2>&1
+ LAUNCHER_TRACKING_SIZE=`expr "$LAUNCHER_TRACKING_SIZE" + "$fullBlocks"`
+ LAUNCHER_TRACKING_SIZE_BYTES=`expr "$LAUNCHER_TRACKING_SIZE" \* "$FILE_BLOCK_SIZE"`
+ fi
+ if [ 0 -lt "$oneBlocks" ] ; then
+ dd if="$LAUNCHER_FULL_PATH" of="$name.tmp.tmp" bs="$FILE_BLOCK_SIZE" count=1\
+ skip="$oneBlocksStart"\
+ > /dev/null 2>&1
+
+ dd if="$name.tmp.tmp" of="$name" bs=1 count="$oneBlocks" seek="$fullBlocksSize"\
+ > /dev/null 2>&1
+
+ rm -f "$name.tmp.tmp"
+ LAUNCHER_TRACKING_SIZE=`expr "$LAUNCHER_TRACKING_SIZE" + 1`
+
+ LAUNCHER_TRACKING_SIZE_BYTES=`expr "$LAUNCHER_TRACKING_SIZE_BYTES" + "$oneBlocks"`
+ fi
+}
+
+md5_program=""
+no_md5_program_id="no_md5_program"
+
+initMD5program() {
+ if [ -z "$md5_program" ] ; then
+ type digest >> /dev/null 2>&1
+ if [ 0 -eq $? ] ; then
+ md5_program="digest -a md5"
+ else
+ type md5sum >> /dev/null 2>&1
+ if [ 0 -eq $? ] ; then
+ md5_program="md5sum"
+ else
+ type gmd5sum >> /dev/null 2>&1
+ if [ 0 -eq $? ] ; then
+ md5_program="gmd5sum"
+ else
+ type md5 >> /dev/null 2>&1
+ if [ 0 -eq $? ] ; then
+ md5_program="md5 -q"
+ else
+ md5_program="$no_md5_program_id"
+ fi
+ fi
+ fi
+ fi
+ debug "... program to check: $md5_program"
+ fi
+}
+
+checkMd5() {
+ name="$1"
+ md5="$2"
+ if [ 32 -eq `getStringLength "$md5"` ] ; then
+ #do MD5 check
+ initMD5program
+ if [ 0 -eq `ifEquals "$md5_program" "$no_md5_program_id"` ] ; then
+ debug "... check MD5 of file : $name"
+ debug "... expected md5: $md5"
+ realmd5=`$md5_program "$name" 2>/dev/null | sed "s/ .*//g"`
+ debug "... real md5 : $realmd5"
+ if [ 32 -eq `getStringLength "$realmd5"` ] ; then
+ if [ 0 -eq `ifEquals "$md5" "$realmd5"` ] ; then
+ debug "... integration check FAILED"
+ message "$MSG_ERROR_INTEGRITY" `normalizePath "$LAUNCHER_FULL_PATH"`
+ exitProgram $ERROR_INTEGRITY
+ fi
+ else
+ debug "... looks like not the MD5 sum"
+ fi
+ fi
+ fi
+}
+searchJavaEnvironment() {
+ if [ -z "$LAUNCHER_JAVA_EXE" ] ; then
+ # search java in the environment
+
+ ptr="$POSSIBLE_JAVA_ENV"
+ while [ -n "$ptr" ] && [ -z "$LAUNCHER_JAVA_EXE" ] ; do
+ argJavaHome=`echo "$ptr" | sed "s/:.*//"`
+ back=`echo "$argJavaHome" | sed "s/\\\//\\\\\\\\\//g"`
+ end=`echo "$ptr" | sed "s/${back}://"`
+ argJavaHome=`echo "$back" | sed "s/\\\\\\\\\//\\\//g"`
+ ptr="$end"
+ eval evaluated=`echo \\$$argJavaHome` > /dev/null
+ if [ -n "$evaluated" ] ; then
+ debug "EnvVar $argJavaHome=$evaluated"
+ verifyJVM "$evaluated"
+ fi
+ done
+ fi
+}
+
+installBundledJVMs() {
+ if [ -z "$LAUNCHER_JAVA_EXE" ] ; then
+ # search bundled java in the common list
+ javaCounter=0
+ while [ $javaCounter -lt $JAVA_LOCATION_NUMBER ] && [ -z "$LAUNCHER_JAVA_EXE" ] ; do
+ fileType=`resolveResourceType "JAVA_LOCATION_$javaCounter"`
+
+ if [ $fileType -eq 0 ] ; then # bundled->install
+ argJavaHome=`resolveResourcePath "JAVA_LOCATION_$javaCounter"`
+ installJVM "$argJavaHome"
+ fi
+ javaCounter=`expr "$javaCounter" + 1`
+ done
+ fi
+}
+
+searchJavaOnMacOs() {
+ if [ -x "/usr/libexec/java_home" ]; then
+ javaOnMacHome=`/usr/libexec/java_home --version 1.8+ --failfast`
+ fi
+
+ if [ ! -x "$javaOnMacHome/bin/java" -a -f "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/bin/java" ] ; then
+ javaOnMacHome=`echo "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home"`
+ fi
+
+ verifyJVM "$javaOnMacHome"
+}
+
+searchJavaSystemDefault() {
+ if [ -z "$LAUNCHER_JAVA_EXE" ] ; then
+ debug "... check default java in the path"
+ java_bin=`which java 2>&1`
+ if [ $? -eq 0 ] && [ -n "$java_bin" ] ; then
+ remove_no_java_in=`echo "$java_bin" | sed "s/no java in//g"`
+ if [ 1 -eq `ifEquals "$remove_no_java_in" "$java_bin"` ] && [ -f "$java_bin" ] ; then
+ debug "... java in path found: $java_bin"
+ # java is in path
+ java_bin=`resolveSymlink "$java_bin"`
+ debug "... java real path: $java_bin"
+ parentDir=`dirname "$java_bin"`
+ if [ -n "$parentDir" ] ; then
+ parentDir=`dirname "$parentDir"`
+ if [ -n "$parentDir" ] ; then
+ debug "... java home path: $parentDir"
+ parentDir=`resolveSymlink "$parentDir"`
+ debug "... java home real path: $parentDir"
+ verifyJVM "$parentDir"
+ fi
+ fi
+ fi
+ fi
+ fi
+}
+
+searchJavaSystemPaths() {
+ if [ -z "$LAUNCHER_JAVA_EXE" ] ; then
+ # search java in the common system paths
+ javaCounter=0
+ while [ $javaCounter -lt $JAVA_LOCATION_NUMBER ] && [ -z "$LAUNCHER_JAVA_EXE" ] ; do
+ fileType=`resolveResourceType "JAVA_LOCATION_$javaCounter"`
+ argJavaHome=`resolveResourcePath "JAVA_LOCATION_$javaCounter"`
+
+ debug "... next location $argJavaHome"
+
+ if [ $fileType -ne 0 ] ; then # bundled JVMs have already been proceeded
+ argJavaHome=`escapeString "$argJavaHome"`
+ locations=`ls -d -1 $argJavaHome 2>/dev/null`
+ nextItem="$locations"
+ itemCounter=1
+ while [ -n "$nextItem" ] && [ -z "$LAUNCHER_JAVA_EXE" ] ; do
+ nextItem=`echo "$locations" | sed -n "${itemCounter}p" 2>/dev/null`
+ debug "... next item is $nextItem"
+ nextItem=`removeEndSlashes "$nextItem"`
+ if [ -n "$nextItem" ] ; then
+ if [ -d "$nextItem" ] || [ $isSymlink "$nextItem" ] ; then
+ debug "... checking item : $nextItem"
+ verifyJVM "$nextItem"
+ fi
+ fi
+ itemCounter=`expr "$itemCounter" + 1`
+ done
+ fi
+ javaCounter=`expr "$javaCounter" + 1`
+ done
+ fi
+}
+
+searchJavaUserDefined() {
+ if [ -z "$LAUNCHER_JAVA_EXE" ] ; then
+ if [ -n "$LAUNCHER_JAVA" ] ; then
+ verifyJVM "$LAUNCHER_JAVA"
+
+ if [ $VERIFY_UNCOMPATIBLE -eq $verifyResult ] ; then
+ message "$MSG_ERROR_JVM_UNCOMPATIBLE" "$LAUNCHER_JAVA" "$ARG_JAVAHOME"
+ exitProgram $ERROR_JVM_UNCOMPATIBLE
+ elif [ $VERIFY_NOJAVA -eq $verifyResult ] ; then
+ message "$MSG_ERROR_USER_ERROR" "$LAUNCHER_JAVA"
+ exitProgram $ERROR_JVM_NOT_FOUND
+ fi
+ fi
+ fi
+}
+
+searchJavaInstallFolder() {
+ installFolder="`dirname \"$0\"`"
+ installFolder="`( cd \"$installFolder\" && pwd )`"
+ installFolder="$installFolder/bin/jre"
+ tempJreFolder="$TEST_JVM_CLASSPATH/_jvm"
+
+ if [ -d "$installFolder" ] ; then
+ #copy nested JRE to temp folder
+ cp -r "$installFolder" "$tempJreFolder"
+
+ verifyJVM "$tempJreFolder"
+ fi
+}
+
+searchJava() {
+ message "$MSG_JVM_SEARCH"
+ if [ ! -f "$TEST_JVM_CLASSPATH" ] && [ ! $isSymlink "$TEST_JVM_CLASSPATH" ] && [ ! -d "$TEST_JVM_CLASSPATH" ]; then
+ debug "Cannot find file for testing JVM at $TEST_JVM_CLASSPATH"
+ message "$MSG_ERROR_JVM_NOT_FOUND" "$ARG_JAVAHOME"
+ exitProgram $ERROR_TEST_JVM_FILE
+ else
+ searchJavaInstallFolder
+ searchJavaUserDefined
+ installBundledJVMs
+ searchJavaEnvironment
+ searchJavaSystemDefault
+ searchJavaSystemPaths
+ if [ 1 -eq $isMacOSX ] ; then
+ searchJavaOnMacOs
+ fi
+ fi
+
+ if [ -z "$LAUNCHER_JAVA_EXE" ] ; then
+ message "$MSG_ERROR_JVM_NOT_FOUND" "$ARG_JAVAHOME"
+ exitProgram $ERROR_JVM_NOT_FOUND
+ fi
+}
+
+normalizePath() {
+ argument="$1"
+
+ # replace all /./ to /
+ while [ 0 -eq 0 ] ; do
+ testArgument=`echo "$argument" | sed 's/\/\.\//\//g' 2> /dev/null`
+ if [ -n "$testArgument" ] && [ 0 -eq `ifEquals "$argument" "$testArgument"` ] ; then
+ # something changed
+ argument="$testArgument"
+ else
+ break
+ fi
+ done
+
+ # replace XXX/../YYY to 'dirname XXX'/YYY
+ while [ 0 -eq 0 ] ; do
+ beforeDotDot=`echo "$argument" | sed "s/\/\.\.\/.*//g" 2> /dev/null`
+ if [ 0 -eq `ifEquals "$beforeDotDot" "$argument"` ] && [ 0 -eq `ifEquals "$beforeDotDot" "."` ] && [ 0 -eq `ifEquals "$beforeDotDot" ".."` ] ; then
+ esc=`echo "$beforeDotDot" | sed "s/\\\//\\\\\\\\\//g"`
+ afterDotDot=`echo "$argument" | sed "s/^$esc\/\.\.//g" 2> /dev/null`
+ parent=`dirname "$beforeDotDot"`
+ argument=`echo "$parent""$afterDotDot"`
+ else
+ break
+ fi
+ done
+
+ # replace XXX/.. to 'dirname XXX'
+ while [ 0 -eq 0 ] ; do
+ beforeDotDot=`echo "$argument" | sed "s/\/\.\.$//g" 2> /dev/null`
+ if [ 0 -eq `ifEquals "$beforeDotDot" "$argument"` ] && [ 0 -eq `ifEquals "$beforeDotDot" "."` ] && [ 0 -eq `ifEquals "$beforeDotDot" ".."` ] ; then
+ argument=`dirname "$beforeDotDot"`
+ else
+ break
+ fi
+ done
+
+ # remove /. a the end (if the resulting string is not zero)
+ testArgument=`echo "$argument" | sed 's/\/\.$//' 2> /dev/null`
+ if [ -n "$testArgument" ] ; then
+ argument="$testArgument"
+ fi
+
+ # replace more than 2 separators to 1
+ testArgument=`echo "$argument" | sed 's/\/\/*/\//g' 2> /dev/null`
+ if [ -n "$testArgument" ] ; then
+ argument="$testArgument"
+ fi
+
+ echo "$argument"
+}
+
+resolveSymlink() {
+ pathArg="$1"
+ while [ $isSymlink "$pathArg" ] ; do
+ ls=`ls -ld "$pathArg"`
+ link=`expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null`
+
+ if expr "$link" : '^/' 2> /dev/null >/dev/null; then
+ pathArg="$link"
+ else
+ pathArg="`dirname "$pathArg"`"/"$link"
+ fi
+ pathArg=`normalizePath "$pathArg"`
+ done
+ echo "$pathArg"
+}
+
+verifyJVM() {
+ javaTryPath=`normalizePath "$1"`
+ verifyJavaHome "$javaTryPath"
+ if [ $VERIFY_OK -ne $verifyResult ] ; then
+ savedResult=$verifyResult
+
+ if [ 0 -eq $isMacOSX ] ; then
+ #check private jre
+ javaTryPath="$javaTryPath""/jre"
+ verifyJavaHome "$javaTryPath"
+ else
+ #check MacOSX Home dir
+ javaTryPath="$javaTryPath""/Home"
+ verifyJavaHome "$javaTryPath"
+ fi
+
+ if [ $VERIFY_NOJAVA -eq $verifyResult ] ; then
+ verifyResult=$savedResult
+ fi
+ fi
+}
+
+removeEndSlashes() {
+ arg="$1"
+ tryRemove=`echo "$arg" | sed 's/\/\/*$//' 2>/dev/null`
+ if [ -n "$tryRemove" ] ; then
+ arg="$tryRemove"
+ fi
+ echo "$arg"
+}
+
+checkJavaHierarchy() {
+ # return 0 on no java
+ # return 1 on jre
+ # return 2 on jdk
+
+ tryJava="$1"
+ javaHierarchy=0
+ if [ -n "$tryJava" ] ; then
+ if [ -d "$tryJava" ] || [ $isSymlink "$tryJava" ] ; then # existing directory or a isSymlink
+ javaBin="$tryJava"/"bin"
+
+ if [ -d "$javaBin" ] || [ $isSymlink "$javaBin" ] ; then
+ javaBinJavac="$javaBin"/"javac"
+ if [ -f "$javaBinJavac" ] || [ $isSymlink "$javaBinJavac" ] ; then
+ #definitely JDK as the JRE doesn`t contain javac
+ javaHierarchy=2
+ else
+ #check if we inside JRE
+ javaBinJava="$javaBin"/"java"
+ if [ -f "$javaBinJava" ] || [ $isSymlink "$javaBinJava" ] ; then
+ javaHierarchy=1
+ fi
+ fi
+ fi
+ fi
+ fi
+ if [ 0 -eq $javaHierarchy ] ; then
+ debug "... no java there"
+ elif [ 1 -eq $javaHierarchy ] ; then
+ debug "... JRE there"
+ elif [ 2 -eq $javaHierarchy ] ; then
+ debug "... JDK there"
+ fi
+}
+
+verifyJavaHome() {
+ verifyResult=$VERIFY_NOJAVA
+ java=`removeEndSlashes "$1"`
+ debug "... verify : $java"
+
+ java=`resolveSymlink "$java"`
+ debug "... real path : $java"
+
+ checkJavaHierarchy "$java"
+
+ if [ 0 -ne $javaHierarchy ] ; then
+ testJVMclasspath=`escapeString "$TEST_JVM_CLASSPATH"`
+ testJVMclass=`escapeString "$TEST_JVM_CLASS"`
+
+ pointer="$POSSIBLE_JAVA_EXE_SUFFIX"
+ while [ -n "$pointer" ] && [ -z "$LAUNCHER_JAVA_EXE" ]; do
+ arg=`echo "$pointer" | sed "s/:.*//"`
+ back=`echo "$arg" | sed "s/\\\//\\\\\\\\\//g"`
+ end=`echo "$pointer" | sed "s/${back}://"`
+ arg=`echo "$back" | sed "s/\\\\\\\\\//\\\//g"`
+ pointer="$end"
+ javaExe="$java/$arg"
+
+ if [ -x "$javaExe" ] ; then
+ javaExeEscaped=`escapeString "$javaExe"`
+ command="$javaExeEscaped -classpath $testJVMclasspath $testJVMclass"
+
+ debug "Executing java verification command..."
+ debug "$command"
+ output=`eval "$command" 2>/dev/null`
+ javaVersion=`echo "$output" | sed "2d;3d;4d;5d"`
+ javaVmVersion=`echo "$output" | sed "1d;3d;4d;5d"`
+ vendor=`echo "$output" | sed "1d;2d;4d;5d"`
+ osname=`echo "$output" | sed "1d;2d;3d;5d"`
+ osarch=`echo "$output" | sed "1d;2d;3d;4d"`
+
+ debug "Java :"
+ debug " executable = {$javaExe}"
+ debug " javaVersion = {$javaVersion}"
+ debug " javaVmVersion = {$javaVmVersion}"
+ debug " vendor = {$vendor}"
+ debug " osname = {$osname}"
+ debug " osarch = {$osarch}"
+ comp=0
+
+ if [ -n "$javaVersion" ] && [ -n "$javaVmVersion" ] && [ -n "$vendor" ] && [ -n "$osname" ] && [ -n "$osarch" ] ; then
+ debug "... seems to be java indeed"
+ javaVersionEsc=`escapeBackslash "$javaVersion"`
+ javaVmVersionEsc=`escapeBackslash "$javaVmVersion"`
+ javaVersion=`awk 'END { idx = index(b,a); if(idx!=0) { print substr(b,idx,length(b)) } else { print a } }' a="$javaVersionEsc" b="$javaVmVersionEsc" < /dev/null`
+
+ #remove build number
+ javaVersion=`echo "$javaVersion" | sed 's/-.*$//;s/\ .*//'`
+ verifyResult=$VERIFY_UNCOMPATIBLE
+
+ if [ -n "$javaVersion" ] ; then
+ debug " checking java version = {$javaVersion}"
+ javaCompCounter=0
+
+ while [ $javaCompCounter -lt $JAVA_COMPATIBLE_PROPERTIES_NUMBER ] && [ -z "$LAUNCHER_JAVA_EXE" ] ; do
+ comp=1
+ setJavaCompatibilityProperties_$javaCompCounter
+ debug "Min Java Version : $JAVA_COMP_VERSION_MIN"
+ debug "Max Java Version : $JAVA_COMP_VERSION_MAX"
+ debug "Java Vendor : $JAVA_COMP_VENDOR"
+ debug "Java OS Name : $JAVA_COMP_OSNAME"
+ debug "Java OS Arch : $JAVA_COMP_OSARCH"
+
+ if [ -n "$JAVA_COMP_VERSION_MIN" ] ; then
+ compMin=`ifVersionLess "$javaVersion" "$JAVA_COMP_VERSION_MIN"`
+ if [ 1 -eq $compMin ] ; then
+ comp=0
+ fi
+ fi
+
+ if [ -n "$JAVA_COMP_VERSION_MAX" ] ; then
+ compMax=`ifVersionGreater "$javaVersion" "$JAVA_COMP_VERSION_MAX"`
+ if [ 1 -eq $compMax ] ; then
+ comp=0
+ fi
+ fi
+ if [ -n "$JAVA_COMP_VENDOR" ] ; then
+ debug " checking vendor = {$vendor}, {$JAVA_COMP_VENDOR}"
+ subs=`echo "$vendor" | sed "s/${JAVA_COMP_VENDOR}//"`
+ if [ `ifEquals "$subs" "$vendor"` -eq 1 ] ; then
+ comp=0
+ debug "... vendor incompatible"
+ fi
+ fi
+
+ if [ -n "$JAVA_COMP_OSNAME" ] ; then
+ debug " checking osname = {$osname}, {$JAVA_COMP_OSNAME}"
+ subs=`echo "$osname" | sed "s/${JAVA_COMP_OSNAME}//"`
+
+ if [ `ifEquals "$subs" "$osname"` -eq 1 ] ; then
+ comp=0
+ debug "... osname incompatible"
+ fi
+ fi
+ if [ -n "$JAVA_COMP_OSARCH" ] ; then
+ debug " checking osarch = {$osarch}, {$JAVA_COMP_OSARCH}"
+ subs=`echo "$osarch" | sed "s/${JAVA_COMP_OSARCH}//"`
+
+ if [ `ifEquals "$subs" "$osarch"` -eq 1 ] ; then
+ comp=0
+ debug "... osarch incompatible"
+ fi
+ fi
+ if [ $comp -eq 1 ] ; then
+ LAUNCHER_JAVA_EXE="$javaExe"
+ LAUNCHER_JAVA="$java"
+ verifyResult=$VERIFY_OK
+ fi
+ debug " compatible = [$comp]"
+ javaCompCounter=`expr "$javaCompCounter" + 1`
+ done
+ fi
+ fi
+ fi
+ done
+ fi
+}
+
+checkFreeSpace() {
+ size="$1"
+ path="$2"
+
+ if [ ! -d "$path" ] && [ ! $isSymlink "$path" ] ; then
+ # if checking path is not an existing directory - check its parent dir
+ path=`dirname "$path"`
+ fi
+
+ diskSpaceCheck=0
+
+ if [ 0 -eq $PERFORM_FREE_SPACE_CHECK ] ; then
+ diskSpaceCheck=1
+ else
+ # get size of the atomic entry (directory)
+ freeSpaceDirCheck="$path"/freeSpaceCheckDir
+ debug "Checking space in $path (size = $size)"
+ mkdir -p "$freeSpaceDirCheck"
+ # POSIX compatible du return size in 1024 blocks
+ du --block-size=$DEFAULT_DISK_BLOCK_SIZE "$freeSpaceDirCheck" 1>/dev/null 2>&1
+
+ if [ $? -eq 0 ] ; then
+ debug " getting POSIX du with 512 bytes blocks"
+ atomicBlock=`du --block-size=$DEFAULT_DISK_BLOCK_SIZE "$freeSpaceDirCheck" | awk ' { print $A }' A=1 2>/dev/null`
+ else
+ debug " getting du with default-size blocks"
+ atomicBlock=`du "$freeSpaceDirCheck" | awk ' { print $A }' A=1 2>/dev/null`
+ fi
+ rm -rf "$freeSpaceDirCheck"
+ debug " atomic block size : [$atomicBlock]"
+
+ isBlockNumber=`ifNumber "$atomicBlock"`
+ if [ 0 -eq $isBlockNumber ] ; then
+ out "Can\`t get disk block size"
+ exitProgram $ERROR_INPUTOUPUT
+ fi
+ requiredBlocks=`expr \( "$1" / $DEFAULT_DISK_BLOCK_SIZE \) + $atomicBlock` 1>/dev/null 2>&1
+ if [ `ifNumber $1` -eq 0 ] ; then
+ out "Can\`t calculate required blocks size"
+ exitProgram $ERROR_INPUTOUPUT
+ fi
+ # get free block size
+ column=4
+ df -P --block-size="$DEFAULT_DISK_BLOCK_SIZE" "$path" 1>/dev/null 2>&1
+ if [ $? -eq 0 ] ; then
+ # gnu df, use POSIX output
+ debug " getting GNU POSIX df with specified block size $DEFAULT_DISK_BLOCK_SIZE"
+ availableBlocks=`df -P --block-size="$DEFAULT_DISK_BLOCK_SIZE" "$path" | sed "1d" | awk ' { print $A }' A=$column 2>/dev/null`
+ else
+ # try POSIX output
+ df -P "$path" 1>/dev/null 2>&1
+ if [ $? -eq 0 ] ; then
+ debug " getting POSIX df with 512 bytes blocks"
+ availableBlocks=`df -P "$path" | sed "1d" | awk ' { print $A }' A=$column 2>/dev/null`
+ # try Solaris df from xpg4
+ elif [ -x /usr/xpg4/bin/df ] ; then
+ debug " getting xpg4 df with default-size blocks"
+ availableBlocks=`/usr/xpg4/bin/df -P "$path" | sed "1d" | awk ' { print $A }' A=$column 2>/dev/null`
+ # last chance to get free space
+ else
+ debug " getting df with default-size blocks"
+ availableBlocks=`df "$path" | sed "1d" | awk ' { print $A }' A=$column 2>/dev/null`
+ fi
+ fi
+ debug " available blocks : [$availableBlocks]"
+ if [ `ifNumber "$availableBlocks"` -eq 0 ] ; then
+ out "Can\`t get the number of the available blocks on the system"
+ exitProgram $ERROR_INPUTOUTPUT
+ fi
+
+ # compare
+ debug " required blocks : [$requiredBlocks]"
+
+ if [ $availableBlocks -gt $requiredBlocks ] ; then
+ debug "... disk space check OK"
+ diskSpaceCheck=1
+ else
+ debug "... disk space check FAILED"
+ fi
+ fi
+ if [ 0 -eq $diskSpaceCheck ] ; then
+ mbDownSize=`expr "$size" / 1024 / 1024`
+ mbUpSize=`expr "$size" / 1024 / 1024 + 1`
+ mbSize=`expr "$mbDownSize" \* 1024 \* 1024`
+ if [ $size -ne $mbSize ] ; then
+ mbSize="$mbUpSize"
+ else
+ mbSize="$mbDownSize"
+ fi
+
+ message "$MSG_ERROR_FREESPACE" "$mbSize" "$ARG_TEMPDIR"
+ exitProgram $ERROR_FREESPACE
+ fi
+}
+
+prepareClasspath() {
+ debug "Processing external jars ..."
+ processJarsClasspath
+
+ LAUNCHER_CLASSPATH=""
+ if [ -n "$JARS_CLASSPATH" ] ; then
+ if [ -z "$LAUNCHER_CLASSPATH" ] ; then
+ LAUNCHER_CLASSPATH="$JARS_CLASSPATH"
+ else
+ LAUNCHER_CLASSPATH="$LAUNCHER_CLASSPATH":"$JARS_CLASSPATH"
+ fi
+ fi
+
+ if [ -n "$PREPEND_CP" ] ; then
+ debug "Appending classpath with [$PREPEND_CP]"
+ PREPEND_CP=`resolveString "$PREPEND_CP"`
+
+ if [ -z "$LAUNCHER_CLASSPATH" ] ; then
+ LAUNCHER_CLASSPATH="$PREPEND_CP"
+ else
+ LAUNCHER_CLASSPATH="$PREPEND_CP":"$LAUNCHER_CLASSPATH"
+ fi
+ fi
+ if [ -n "$APPEND_CP" ] ; then
+ debug "Appending classpath with [$APPEND_CP]"
+ APPEND_CP=`resolveString "$APPEND_CP"`
+ if [ -z "$LAUNCHER_CLASSPATH" ] ; then
+ LAUNCHER_CLASSPATH="$APPEND_CP"
+ else
+ LAUNCHER_CLASSPATH="$LAUNCHER_CLASSPATH":"$APPEND_CP"
+ fi
+ fi
+ debug "Launcher Classpath : $LAUNCHER_CLASSPATH"
+}
+
+resolvePropertyStrings() {
+ args="$1"
+ escapeReplacedString="$2"
+ propertyStart=`echo "$args" | sed "s/^.*\\$P{//"`
+ propertyValue=""
+ propertyName=""
+
+ #Resolve i18n strings and properties
+ if [ 0 -eq `ifEquals "$propertyStart" "$args"` ] ; then
+ propertyName=`echo "$propertyStart" | sed "s/}.*//" 2>/dev/null`
+ if [ -n "$propertyName" ] ; then
+ propertyValue=`getMessage "$propertyName"`
+
+ if [ 0 -eq `ifEquals "$propertyValue" "$propertyName"` ] ; then
+ propertyName="\$P{$propertyName}"
+ args=`replaceString "$args" "$propertyName" "$propertyValue" "$escapeReplacedString"`
+ fi
+ fi
+ fi
+
+ echo "$args"
+}
+
+
+resolveLauncherSpecialProperties() {
+ args="$1"
+ escapeReplacedString="$2"
+ propertyValue=""
+ propertyName=""
+ propertyStart=`echo "$args" | sed "s/^.*\\$L{//"`
+
+
+ if [ 0 -eq `ifEquals "$propertyStart" "$args"` ] ; then
+ propertyName=`echo "$propertyStart" | sed "s/}.*//" 2>/dev/null`
+
+
+ if [ -n "$propertyName" ] ; then
+ case "$propertyName" in
+ "nbi.launcher.tmp.dir")
+ propertyValue="$LAUNCHER_EXTRACT_DIR"
+ ;;
+ "nbi.launcher.java.home")
+ propertyValue="$LAUNCHER_JAVA"
+ ;;
+ "nbi.launcher.user.home")
+ propertyValue="$HOME"
+ ;;
+ "nbi.launcher.parent.dir")
+ propertyValue="$LAUNCHER_DIR"
+ ;;
+ *)
+ propertyValue="$propertyName"
+ ;;
+ esac
+ if [ 0 -eq `ifEquals "$propertyValue" "$propertyName"` ] ; then
+ propertyName="\$L{$propertyName}"
+ args=`replaceString "$args" "$propertyName" "$propertyValue" "$escapeReplacedString"`
+ fi
+ fi
+ fi
+ echo "$args"
+}
+
+resolveString() {
+ args="$1"
+ escapeReplacedString="$2"
+ last="$args"
+ repeat=1
+
+ while [ 1 -eq $repeat ] ; do
+ repeat=1
+ args=`resolvePropertyStrings "$args" "$escapeReplacedString"`
+ args=`resolveLauncherSpecialProperties "$args" "$escapeReplacedString"`
+ if [ 1 -eq `ifEquals "$last" "$args"` ] ; then
+ repeat=0
+ fi
+ last="$args"
+ done
+ echo "$args"
+}
+
+replaceString() {
+ initialString="$1"
+ fromString="$2"
+ toString="$3"
+ if [ -n "$4" ] && [ 0 -eq `ifEquals "$4" "false"` ] ; then
+ toString=`escapeString "$toString"`
+ fi
+ fromString=`echo "$fromString" | sed "s/\\\//\\\\\\\\\//g" 2>/dev/null`
+ toString=`echo "$toString" | sed "s/\\\//\\\\\\\\\//g" 2>/dev/null`
+ replacedString=`echo "$initialString" | sed "s/${fromString}/${toString}/g" 2>/dev/null`
+ echo "$replacedString"
+}
+
+prepareJVMArguments() {
+ debug "Prepare JVM arguments... "
+
+ jvmArgCounter=0
+ debug "... resolving string : $LAUNCHER_JVM_ARGUMENTS"
+ LAUNCHER_JVM_ARGUMENTS=`resolveString "$LAUNCHER_JVM_ARGUMENTS" true`
+ debug "... resolved string : $LAUNCHER_JVM_ARGUMENTS"
+ while [ $jvmArgCounter -lt $JVM_ARGUMENTS_NUMBER ] ; do
+ argumentVar="$""JVM_ARGUMENT_$jvmArgCounter"
+ arg=`eval "echo \"$argumentVar\""`
+ debug "... jvm argument [$jvmArgCounter] [initial] : $arg"
+ arg=`resolveString "$arg"`
+ debug "... jvm argument [$jvmArgCounter] [resolved] : $arg"
+ arg=`escapeString "$arg"`
+ debug "... jvm argument [$jvmArgCounter] [escaped] : $arg"
+ LAUNCHER_JVM_ARGUMENTS="$LAUNCHER_JVM_ARGUMENTS $arg"
+ jvmArgCounter=`expr "$jvmArgCounter" + 1`
+ done
+ if [ ! -z "${DEFAULT_USERDIR_ROOT}" ] ; then
+ debug "DEFAULT_USERDIR_ROOT: $DEFAULT_USERDIR_ROOT"
+ LAUNCHER_JVM_ARGUMENTS="$LAUNCHER_JVM_ARGUMENTS -Dnetbeans.default_userdir_root=\"${DEFAULT_USERDIR_ROOT}\""
+ fi
+ if [ ! -z "${DEFAULT_CACHEDIR_ROOT}" ] ; then
+ debug "DEFAULT_CACHEDIR_ROOT: $DEFAULT_CACHEDIR_ROOT"
+ LAUNCHER_JVM_ARGUMENTS="$LAUNCHER_JVM_ARGUMENTS -Dnetbeans.default_cachedir_root=\"${DEFAULT_CACHEDIR_ROOT}\""
+ fi
+
+ debug "Final JVM arguments : $LAUNCHER_JVM_ARGUMENTS"
+}
+
+prepareAppArguments() {
+ debug "Prepare Application arguments... "
+
+ appArgCounter=0
+ debug "... resolving string : $LAUNCHER_APP_ARGUMENTS"
+ LAUNCHER_APP_ARGUMENTS=`resolveString "$LAUNCHER_APP_ARGUMENTS" true`
+ debug "... resolved string : $LAUNCHER_APP_ARGUMENTS"
+ while [ $appArgCounter -lt $APP_ARGUMENTS_NUMBER ] ; do
+ argumentVar="$""APP_ARGUMENT_$appArgCounter"
+ arg=`eval "echo \"$argumentVar\""`
+ debug "... app argument [$appArgCounter] [initial] : $arg"
+ arg=`resolveString "$arg"`
+ debug "... app argument [$appArgCounter] [resolved] : $arg"
+ arg=`escapeString "$arg"`
+ debug "... app argument [$appArgCounter] [escaped] : $arg"
+ LAUNCHER_APP_ARGUMENTS="$LAUNCHER_APP_ARGUMENTS $arg"
+ appArgCounter=`expr "$appArgCounter" + 1`
+ done
+ debug "Final application arguments : $LAUNCHER_APP_ARGUMENTS"
+}
+
+
+runCommand() {
+ cmd="$1"
+ debug "Running command : $cmd"
+ if [ -n "$OUTPUT_FILE" ] ; then
+ #redirect all stdout and stderr from the running application to the file
+ eval "$cmd" >> "$OUTPUT_FILE" 2>&1
+ elif [ 1 -eq $SILENT_MODE ] ; then
+ # on silent mode redirect all out/err to null
+ eval "$cmd" > /dev/null 2>&1
+ elif [ 0 -eq $USE_DEBUG_OUTPUT ] ; then
+ # redirect all output to null
+ # do not redirect errors there but show them in the shell output
+ eval "$cmd" > /dev/null
+ else
+ # using debug output to the shell
+ # not a silent mode but a verbose one
+ eval "$cmd"
+ fi
+ return $?
+}
+
+executeMainClass() {
+ prepareClasspath
+ prepareJVMArguments
+ prepareAppArguments
+ debug "Running main jar..."
+ message "$MSG_RUNNING"
+ classpathEscaped=`escapeString "$LAUNCHER_CLASSPATH"`
+ mainClassEscaped=`escapeString "$MAIN_CLASS"`
+ launcherJavaExeEscaped=`escapeString "$LAUNCHER_JAVA_EXE"`
+ tmpdirEscaped=`escapeString "$LAUNCHER_JVM_TEMP_DIR"`
+
+ command="$launcherJavaExeEscaped $LAUNCHER_JVM_ARGUMENTS -Djava.io.tmpdir=$tmpdirEscaped -classpath $classpathEscaped $mainClassEscaped $LAUNCHER_APP_ARGUMENTS"
+
+ debug "Running command : $command"
+ runCommand "$command"
+ exitCode=$?
+ debug "... java process finished with code $exitCode"
+ exitProgram $exitCode
+}
+
+escapeString() {
+ echo "$1" | sed "s/\\\/\\\\\\\/g;s/\ /\\\\ /g;s/\"/\\\\\"/g;s/(/\\\\\(/g;s/)/\\\\\)/g;" # escape spaces, commas and parentheses
+}
+
+getMessage() {
+ getLocalizedMessage_$LAUNCHER_LOCALE $@
+}
+
+POSSIBLE_JAVA_ENV="JAVA:JAVA_HOME:JAVAHOME:JAVA_PATH:JAVAPATH:JDK:JDK_HOME:JDKHOME:ANT_JAVA:"
+POSSIBLE_JAVA_EXE_SUFFIX_SOLARIS="bin/java:bin/sparcv9/java:"
+POSSIBLE_JAVA_EXE_SUFFIX_COMMON="bin/java:"
+
+
+################################################################################
+# Added by the bundle builder
+FILE_BLOCK_SIZE=1024
+
+JAVA_LOCATION_0_TYPE=1
+JAVA_LOCATION_0_PATH="/usr/java*"
+JAVA_LOCATION_1_TYPE=1
+JAVA_LOCATION_1_PATH="/usr/java/*"
+JAVA_LOCATION_2_TYPE=1
+JAVA_LOCATION_2_PATH="/usr/jdk*"
+JAVA_LOCATION_3_TYPE=1
+JAVA_LOCATION_3_PATH="/usr/jdk/*"
+JAVA_LOCATION_4_TYPE=1
+JAVA_LOCATION_4_PATH="/usr/j2se"
+JAVA_LOCATION_5_TYPE=1
+JAVA_LOCATION_5_PATH="/usr/j2se/*"
+JAVA_LOCATION_6_TYPE=1
+JAVA_LOCATION_6_PATH="/usr/j2sdk"
+JAVA_LOCATION_7_TYPE=1
+JAVA_LOCATION_7_PATH="/usr/j2sdk/*"
+JAVA_LOCATION_8_TYPE=1
+JAVA_LOCATION_8_PATH="/usr/java/jdk*"
+JAVA_LOCATION_9_TYPE=1
+JAVA_LOCATION_9_PATH="/usr/java/jdk/*"
+JAVA_LOCATION_10_TYPE=1
+JAVA_LOCATION_10_PATH="/usr/jdk/instances"
+JAVA_LOCATION_11_TYPE=1
+JAVA_LOCATION_11_PATH="/usr/jdk/instances/*"
+JAVA_LOCATION_12_TYPE=1
+JAVA_LOCATION_12_PATH="/usr/local/java"
+JAVA_LOCATION_13_TYPE=1
+JAVA_LOCATION_13_PATH="/usr/local/java/*"
+JAVA_LOCATION_14_TYPE=1
+JAVA_LOCATION_14_PATH="/usr/local/jdk*"
+JAVA_LOCATION_15_TYPE=1
+JAVA_LOCATION_15_PATH="/usr/local/jdk/*"
+JAVA_LOCATION_16_TYPE=1
+JAVA_LOCATION_16_PATH="/usr/local/j2se"
+JAVA_LOCATION_17_TYPE=1
+JAVA_LOCATION_17_PATH="/usr/local/j2se/*"
+JAVA_LOCATION_18_TYPE=1
+JAVA_LOCATION_18_PATH="/usr/local/j2sdk"
+JAVA_LOCATION_19_TYPE=1
+JAVA_LOCATION_19_PATH="/usr/local/j2sdk/*"
+JAVA_LOCATION_20_TYPE=1
+JAVA_LOCATION_20_PATH="/opt/java*"
+JAVA_LOCATION_21_TYPE=1
+JAVA_LOCATION_21_PATH="/opt/java/*"
+JAVA_LOCATION_22_TYPE=1
+JAVA_LOCATION_22_PATH="/opt/jdk*"
+JAVA_LOCATION_23_TYPE=1
+JAVA_LOCATION_23_PATH="/opt/jdk/*"
+JAVA_LOCATION_24_TYPE=1
+JAVA_LOCATION_24_PATH="/opt/j2sdk"
+JAVA_LOCATION_25_TYPE=1
+JAVA_LOCATION_25_PATH="/opt/j2sdk/*"
+JAVA_LOCATION_26_TYPE=1
+JAVA_LOCATION_26_PATH="/opt/j2se"
+JAVA_LOCATION_27_TYPE=1
+JAVA_LOCATION_27_PATH="/opt/j2se/*"
+JAVA_LOCATION_28_TYPE=1
+JAVA_LOCATION_28_PATH="/usr/lib/jvm"
+JAVA_LOCATION_29_TYPE=1
+JAVA_LOCATION_29_PATH="/usr/lib/jvm/*"
+JAVA_LOCATION_30_TYPE=1
+JAVA_LOCATION_30_PATH="/usr/lib/jdk*"
+JAVA_LOCATION_31_TYPE=1
+JAVA_LOCATION_31_PATH="/export/jdk*"
+JAVA_LOCATION_32_TYPE=1
+JAVA_LOCATION_32_PATH="/export/jdk/*"
+JAVA_LOCATION_33_TYPE=1
+JAVA_LOCATION_33_PATH="/export/java"
+JAVA_LOCATION_34_TYPE=1
+JAVA_LOCATION_34_PATH="/export/java/*"
+JAVA_LOCATION_35_TYPE=1
+JAVA_LOCATION_35_PATH="/export/j2se"
+JAVA_LOCATION_36_TYPE=1
+JAVA_LOCATION_36_PATH="/export/j2se/*"
+JAVA_LOCATION_37_TYPE=1
+JAVA_LOCATION_37_PATH="/export/j2sdk"
+JAVA_LOCATION_38_TYPE=1
+JAVA_LOCATION_38_PATH="/export/j2sdk/*"
+JAVA_LOCATION_NUMBER=39
+
+LAUNCHER_LOCALES_NUMBER=1
+LAUNCHER_LOCALE_NAME_0=""
+
+getLocalizedMessage_() {
+ arg=$1
+ shift
+ case $arg in
+ "nlu.integrity")
+ printf "\nInstaller file $1 seems to be corrupted\n"
+ ;;
+ "nlu.arg.cpa")
+ printf "\\t$1 <cp>\\tAppend classpath with <cp>\n"
+ ;;
+ "nlu.java.application.name.macosx")
+ printf "NetBeans IDE Installer\n"
+ ;;
+ "nlu.arg.output")
+ printf "\\t$1\\t<out>\\tRedirect all output to file <out>\n"
+ ;;
+ "nlu.missing.external.resource")
+ printf "Can\`t run NetBeans Installer.\nAn external file with necessary data is required but missing:\n$1\n"
+ ;;
+ "nlu.arg.extract")
+ printf "\\t$1\\t[dir]\\tExtract all bundled data to <dir>.\n\\t\\t\\t\\tIf <dir> is not specified then extract to the current directory\n"
+ ;;
+ "nlu.cannot.create.tmpdir")
+ printf "Cannot create temporary directory $1\n"
+ ;;
+ "nlu.arg.tempdir")
+ printf "\\t$1\\t<dir>\\tUse <dir> for extracting temporary data\n"
+ ;;
+ "nlu.arg.cpp")
+ printf "\\t$1 <cp>\\tPrepend classpath with <cp>\n"
+ ;;
+ "nlu.prepare.jvm")
+ printf "Preparing bundled JVM ...\n"
+ ;;
+ "nlu.arg.disable.space.check")
+ printf "\\t$1\\t\\tDisable free space check\n"
+ ;;
+ "nlu.freespace")
+ printf "There is not enough free disk space to extract installation data\n$1 MB of free disk space is required in a temporary folder.\nClean up the disk space and run installer again. You can specify a temporary folder with sufficient disk space using $2 installer argument\n"
+ ;;
+ "nlu.arg.silent")
+ printf "\\t$1\\t\\tRun installer silently\n"
+ ;;
+ "nlu.arg.verbose")
+ printf "\\t$1\\t\\tUse verbose output\n"
+ ;;
+ "nlu.error.verify.bundled.jvm")
+ printf "Cannot verify bundled JVM, try to search JVM on the system\n"
+ ;;
+ "nlu.running")
+ printf "Running the installer wizard...\n"
+ ;;
+ "nlu.jvm.search")
+ printf "Searching for JVM on the system...\n"
+ ;;
+ "nlu.cannot.unpack.jvm.file")
+ printf "Cannot unpack file $1\n"
+ ;;
+ "nlu.jvm.uncompatible")
+ printf "Unsupported JVM version at $1.\nTry to specify another JVM location using parameter $2\n"
+ ;;
+ "nlu.cannot.extract.bundled.jvm")
+ printf "Cannot prepare bundled JVM to run the installer.\nMost probably the bundled JVM is not compatible with the current platform.\nSee FAQ at http://wiki.netbeans.org/FaqUnableToPrepareBundledJdk for more information.\n"
+ ;;
+ "nlu.arg.help")
+ printf "\\t$1\\t\\tShow this help\n"
+ ;;
+ "nlu.arg.javahome")
+ printf "\\t$1\\t<dir>\\tUsing java from <dir> for running application\n"
+ ;;
+ "nlu.jvm.notfoundmessage")
+ printf "Java SE Development Kit (JDK) was not found on this computer\nJDK 8 is required for installing the NetBeans IDE. Make sure that the JDK is properly installed and run installer again.\nYou can specify valid JDK location using $1 installer argument.\n\nTo download the JDK, visit http://www.oracle.com/technetwork/java/javase/downloads\n"
+ ;;
+ "nlu.msg.usage")
+ printf "\nUsage:\n"
+ ;;
+ "nlu.jvm.usererror")
+ printf "Java Runtime Environment (JRE) was not found at the specified location $1\n"
+ ;;
+ "nlu.starting")
+ printf "Configuring the installer...\n"
+ ;;
+ "nlu.arg.locale")
+ printf "\\t$1\\t<locale>\\tOverride default locale with specified <locale>\n"
+ ;;
+ "nlu.extracting")
+ printf "Extracting installation data...\n"
+ ;;
+ *)
+ printf "$arg\n"
+ ;;
+ esac
+}
+
+
+TEST_JVM_FILE_TYPE=0
+TEST_JVM_FILE_SIZE=772
+TEST_JVM_FILE_MD5="d8070c77b1c84f6cad2cff1ae0a626a5"
+TEST_JVM_FILE_PATH="\$L{nbi.launcher.tmp.dir}/TestJDK.class"
+
+JARS_NUMBER=1
+JAR_0_TYPE=0
+JAR_0_SIZE=184114402
+JAR_0_MD5="638f97296eb3ccf8b39fc4338244910b"
+JAR_0_PATH="\$L{nbi.launcher.tmp.dir}/bundle.jar"
+
+
+JAVA_COMPATIBLE_PROPERTIES_NUMBER=1
+
+setJavaCompatibilityProperties_0() {
+JAVA_COMP_VERSION_MIN="1.8.0"
+JAVA_COMP_VERSION_MAX=""
+JAVA_COMP_VENDOR=""
+JAVA_COMP_OSNAME=""
+JAVA_COMP_OSARCH=""
+}
+OTHER_RESOURCES_NUMBER=0
+TOTAL_BUNDLED_FILES_SIZE=184115174
+TOTAL_BUNDLED_FILES_NUMBER=2
+MAIN_CLASS="org.netbeans.installer.Installer"
+TEST_JVM_CLASS="TestJDK"
+JVM_ARGUMENTS_NUMBER=2
+JVM_ARGUMENT_0="-Xmx256m"
+JVM_ARGUMENT_1="-Xms64m"
+APP_ARGUMENTS_NUMBER=0
+LAUNCHER_STUB_SIZE=58
+entryPoint "$@"
+
+###############################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################################Êþº¾ - 3
+ ! " # $ %
+ $ &
+ '