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