My project is using a specific version of JDK which is jdk-6 and the default JDK_HOME path will vary from distribution to distribution, so I wrote a script to guess it. Is there any way to do this better?
#!/bin/bash
JAVA_HOME=""
JDK_TEMP=""
shopt -s extglob
JDK_ROOT_DIR=( /usr/java/ /usr/java/jdk/ /usr/j2se/ /usr/j2se/ /usr/j2sdk/ /usr/jdk/ /usr/lib/java/ /usr/lib/j2se/ /usr/lib/j2sdk/ /usr/lib/jdk/ /usr/lib/jvm/java/ /usr/lib/jvm/j2se/ /usr/lib/jvm/j2sdk/ /usr/lib/jvm/jdk/ /usr/local/java/ /usr/local/java/jdk/ /usr/local/jdk/ /opt/java/ /opt/j2se/ /opt/j2sdk/ /opt/j2sdk/ /opt/jdki/ /usr/lib/jvm/ )
for sub_dir in "${JDK_ROOT_DIR[@]}"
do
# #
# For each subdirectory inside the root directory #
# #
# #
# For openjdk #
for jdk_dir in $sub_dir/java-*6*-openjdk*!(common) ; do
if [[ -d $jdk_dir ]]; then
echo $jdk_dir
export JAVA_HOME=$jdk_dir
exit 0
fi
done
# for IBM Java #
for jdk_dir in $sub_dir/java-1_6_0-ibm-!(common) ; do
if [[ -d $jdk_dir ]]; then
echo $jdk_dir
export JAVA_HOME=$jdk_dir;
exit 0
fi
done
# for raspbian java #
for jdk_dir in $sub_dir/jdk-8-oracle-arm32-!(common) ; do
if [[ -d $jdk_dir ]] ; then
echo $jdk_dir
export JAVA_HOME=$jdk_dir
exit 0
fi
done
done
echo "JDK directory not found."
whereis javac
? \$\endgroup\$ – Maybe_Factor Nov 23 '16 at 1:05