Locate-jre
From Cyber-Physical Systems Laboratory
Jump to navigationJump to search
#!/bin/sh # This script attempts to locate the jre directory of the current # Java installation, even when java is not in the path # We only support it for Sun's Java on Windows and IBM's Java on Linux # We require an option to specify which directory is desired: # --java: directory with java executable # --javac: directory with javac executable # --jni: directory where JNI code is placed if [ "$1" = "--jni" ]; then jni=yes elif [ "$1" = "--java" ]; then java=yes elif [ "$1" = "--javac" ]; then javac=yes else echo "Usage: locate-jre --java|--javac|--jni" >&2 exit 2 fi if [ -f /usr/bin/regtool ]; then # Hopefully this will always work on cygwin with Sun's Java jversion=`regtool -q get '\HKLM\SOFTWARE\JavaSoft\Java Development Kit\CurrentVersion'` if [ $? != 0 ]; then exit 1 fi jhome=`regtool -q get '\HKLM\SOFTWARE\JavaSoft\Java Development Kit\'$jversion'\JavaHome'` if [ $? != 0 ]; then exit 1 fi jhome=`cygpath -u "$jhome"` else # On Linux, we first try to find it from the rpm j=`rpm -ql IBMJava2-SDK | grep -m 1 'bin/javac$'` if [ $? != 0 ]; then # Next we try the path. But a nasty rpm may have removed them, so we # recreate our default path... PATH=`bash --login -c 'echo $PATH'` j=`which javac 2>/dev/null` if [ $? != 0 ]; then exit 1 fi fi jbin=`dirname "$j"` jhome=`dirname "$jbin"` fi # These are correct for Sun's Window java and IBM's Linux java if [ "$jni" = "yes" ]; then dir="$jhome/jre/bin" elif [ "$javac" = "yes" ]; then dir="$jhome/bin" elif [ "$java" = "yes" ]; then dir="$jhome/jre/bin" fi # Check that what we found actually exists if [ -d "$dir" ]; then echo $dir else exit 1 fi