#!/bin/bash # Having any sort of classpath causes massive breakage, with Kaffe at least. unset CLASSPATH; export CLASSPATH # Allow the user to specify their own Java home, we check for it later. #unset JAVA_HOME; export JAVA_HOME CMDLINEARGS="" VMARGS="" INSTALL="/usr/lib/eclipse" STARTUP="/usr/lib/eclipse/startup.jar" if [ -x /usr/bin/zenity ]; then DIALOG=/usr/bin/zenity elif [ -x /usr/bin/kdialog ]; then DIALOG=/usr/bin/kdialog elif [ -x /usr/bin/xdialog ]; then DIALOG=/usr/bin/xdialog else DIALOG=echo fi # Make sure this directory exists. if [ ! -d ~/.eclipse ]; then mkdir ~/.eclipse > /dev/null 2>&1 if [ $? -ne 0 ]; then $DIALOG \ --error "Could not create settings directory at ~/.eclipse." \ --title "Could not launch Eclipse Platform" fi fi # Just in case Eclipse tries to put something in the home directory. cd ~ # Load default settings from the user's configuration file. if [ -f ~/.eclipse/eclipserc ]; then . ~/.eclipse/eclipserc fi # Process the command line options. These override the eclipserc file, so we do # them after parsing that file. while [ "$1" ]; do if [ "$1" = "-h" -o "$1" = "--help" ]; then echo "Eclipse Starter Script" echo "Usage:" echo "eclipse [options [value]]" echo "See eclipse(1) for more information." echo "" echo "Also see ~/.eclipse/eclipserc, which provides some default values" exit 0 elif [ "$1" = "-vm" ]; then shift unset JAVA_HOME JAVACMD="$1" shift elif [ "$1" = "-install" ]; then shift INSTALL="$1" shift elif [ "$1" = "-startup" ]; then shift STARTUP="$1" shift elif [ "$1" = "-vmargs" ]; then shift while [ "$1" ]; do VMARGS="${VMARGS} $1" shift done else CMDLINEARGS="${CMDLINEARGS} $1" shift fi done # If the user has specified a custom JAVA, we check it for validity. # JAVA defines the virtual machine that Eclipse will use to launch itself. if [ -n "${JAVA_HOME}" ]; then echo "using specified vm: ${JAVA_HOME}" if [ ! -x "${JAVA_HOME}/bin/java" ]; then $DIALOG \ --title "Could not launch Eclipse Platform" \ --error "The custom VM you have chosen is not a valid executable." exit 1 fi fi # If the user has not set JAVA_HOME, cycle through our list of compatible VM's # and pick the first one that exists. if [ -z "${JAVA_HOME}" -a ! -n "${JAVACMD}" ]; then echo "searching for compatible vm..." javahomelist=`cat /etc/eclipse/java_home | grep -v '^#' | grep -v '^$' | while read line ; do echo -n $line ; echo -n ":" ; done` OFS="$IFS" IFS=":" for JAVA_HOME in $javahomelist ; do echo -n " testing ${JAVA_HOME}..." if [ -x "${JAVA_HOME}/bin/java" ]; then export JAVA_HOME echo "found" break else echo "not found" fi done IFS="$OFS" fi # If we don't have a JAVA_HOME yet, we're doomed. if [ -z "${JAVA_HOME}" -a ! -n "${JAVACMD}" ]; then $DIALOG \ --title "Could not launch Eclipse Platform" \ --error "A suitable Java Virtual Machine for running the Eclipse Platform could not be located." exit 1 fi # Set JAVACMD from JAVA_HOME if [ -n "${JAVA_HOME}" -a -z "${JAVACMD}" ]; then JAVACMD="$JAVA_HOME/bin/java" fi # Set path for the Mozilla SWT binding MOZILLA_FIVE_HOME=${MOZILLA_FIVE_HOME%*/} if [ -n "$MOZILLA_FIVE_HOME" -a -e $MOZILLA_FIVE_HOME/libgtkembedmoz.so ]; then : elif [ -e /usr/lib/firefox/libgtkembedmoz.so ]; then export MOZILLA_FIVE_HOME=/usr/lib/firefox elif [ -e /usr/lib/firefox/libgtkembedmoz.so ]; then export MOZILLA_FIVE_HOME=/usr/lib/firefox elif [ -e /usr/lib/xulrunner/libgtkembedmoz.so ]; then export MOZILLA_FIVE_HOME=/usr/lib/firefox elif [ -e /usr/lib/mozilla-firefox/libgtkembedmoz.so ]; then export MOZILLA_FIVE_HOME=/usr/lib/mozilla-firefox elif [ -e /usr/lib/mozilla/libgtkembedmoz.so ]; then export MOZILLA_FIVE_HOME=/usr/lib/mozilla else $DIALOG \ --title "Integrated browser support not working" \ --sorry "This Eclipse build doesn't have support for the integrated browser." [ $? -eq 0 ] || exit 1 fi # libraries from the mozilla choosen take precedence LD_LIBRARY_PATH=$MOZILLA_FIVE_HOME${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} # Do the actual launch of Eclipse with the selected VM. exec /usr/lib/eclipse/eclipse \ -vm "${JAVACMD}" \ -install "${INSTALL}" \ -startup "${STARTUP}" \ ${CMDLINEARGS} \ -vmargs -Djava.library.path=/usr/lib/jni \ -Dgnu.gcj.precompiled.db.path=/var/lib/gcj-4.1/classmap.db \ -Dgnu.gcj.runtime.VMClassLoader.library_control=never \ -Dosgi.locking=none ${VMARGS}