1 #!/bin/bash
   2 #
   3 # Java Packager tool execution script for Linux and MacOS.
   4 #
   5 
   6 # Default values.
   7 DEBUG=""
   8 MEMORY="-Xmx512M"
   9 JAVA_ARGS=""
  10 DEBUG_ARG="-J-Xdebug:";
  11 
  12 # Argument parsing.
  13 args=
  14 narg=1
  15 for i in "$@"; do
  16     if [[ "$i" == "-J-Xmx"* ]]; then
  17         ARGUMENT=${i:2}
  18         MEMORY=${ARGUMENT}
  19     elif [[ "$i" == ${DEBUG_ARG}* ]]; then
  20         ADDRESS=${i:${#DEBUG_ARG}}
  21         DEBUG="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=${ADDRESS}"
  22     elif [[ "$i" == "-J-"* ]]; then
  23         ARGUMENT=${i:2}
  24         JAVA_ARGS="${JAVA_ARGS} ${ARGUMENT}"
  25     else
  26         args="$args \"$""{"$narg"}\""
  27     fi
  28     narg=`expr $narg + 1`
  29 done
  30 
  31 # resolve symlinks
  32 PRG=$0
  33 while [ -h "$PRG" ]; do
  34     ls=`ls -ld "$PRG"`
  35     link=`expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null`
  36     if expr "$link" : '^/' 2> /dev/null >/dev/null; then
  37         PRG="$link"
  38     else
  39         PRG="`dirname "$PRG"`/$link"
  40     fi
  41 done
  42 
  43 # detect Darwin and Cygwin environments
  44 darwin=false;
  45 cygwin=false;
  46 case "`uname`" in
  47   Darwin*) darwin=true;
  48            if [ -z "$JAVA_HOME" ] ; then
  49                BIN_DIR=`dirname $PRG`
  50                JAVA_HOME=`cd $BIN_DIR > /dev/null; pwd`/..
  51            fi
  52            ;;
  53   CYGWIN*) cygwin=true;;
  54 esac
  55 
  56 JAVA_PACKAGER_PATH=$(cd $(dirname $0) ; pwd -P)
  57 JAVA_CMD="${JAVA_PACKAGER_PATH}/java"
  58 
  59 if [[ ! -f ${JAVA_CMD} ]]; then
  60   if [ -n "$JAVA_HOME" -a -x "$JAVA_HOME/bin/javac" ] ; then
  61       JAVA_CMD="$JAVA_HOME/bin/java"
  62       export JAVA_HOME
  63   else
  64     JAVAC_CMD=`which javac 2> /dev/null `
  65     while [ -h "$JAVAC_CMD" ]; do
  66       ls=`ls -ld "$JAVAC_CMD"`
  67       link=`expr "$ls" : '^.*-> \(.*\)$' 2>/dev/null`
  68       if expr "$link" : '^/' 2> /dev/null >/dev/null; then
  69         JAVAC_CMD="$link"
  70       else
  71         JAVAC_CMD="`dirname "$JAVAC_CMD"`/$link"
  72       fi
  73     done
  74 
  75     BIN_DIR=`dirname "$JAVAC_CMD"`
  76     JAVA_HOME=`dirname "$BIN_DIR"`
  77     if [ "m$JAVA_HOME" != "m." ]; then
  78       JAVA_CMD="$JAVA_HOME/bin/java"
  79       export JAVA_HOME
  80     else
  81       unset JAVA_HOME
  82       JAVA_CMD=`which java 2> /dev/null `
  83       if [ -z "$JAVA_CMD" ]; then
  84         JAVA_CMD="java"
  85       fi
  86     fi
  87   fi
  88 fi
  89 
  90 if [ ! -x "$JAVA_CMD" ] ; then
  91   echo 'Error: JAVA_HOME is not defined, cannot find "java" command.'
  92   exit 1
  93 fi
  94 
  95 if $cygwin ; then
  96     JAVA_CMD=`cygpath --unix "$JAVA_CMD"`
  97 fi
  98 
  99 # This is similar to "$@" except we had to strip out some arguments
 100 # that we don't want to be passed to the Java Packager.
 101 eval exec "$JAVA_CMD" ${DEBUG} ${MEMORY} ${JAVA_ARGS} \
 102     -m jdk.packager/jdk.packager.main.Main $args
 103