Make envsetup.sh set JAVA_HOME correctly for java7.

Note that despite the location of this change, this function
is run only during "lunch" and not during ". build/envsetup.sh"

Also, make it easier to switch back and forth between java6 and 7
on the same session.

bug: 8992787

Change-Id: I56ec0ba8552b46c04204a8b96b9abc0180f7605f
This commit is contained in:
Narayan Kamath 2014-01-17 10:05:25 +00:00
parent 62043de346
commit 9260bba06f
1 changed files with 29 additions and 1 deletions

View File

@ -1322,9 +1322,23 @@ function godir () {
\cd $T/$pathname
}
# Force JAVA_HOME to point to java 1.6 if it isn't already set
# Force JAVA_HOME to point to java 1.7 or java 1.6 if it isn't already set.
#
# Note that the MacOS path for java 1.7 includes a minor revision number (sigh).
# For some reason, installing the JDK doesn't make it show up in the
# JavaVM.framework/Versions/1.7/ folder.
function set_java_home() {
# Clear the existing JAVA_HOME value if we set it ourselves, so that
# we can reset it later, depending on the value of EXPERIMENTAL_USE_JAVA7.
#
# If we don't do this, the JAVA_HOME value set by the first call to
# build/envsetup.sh will persist forever.
if [ -n "$ANDROID_SET_JAVA_HOME" ]; then
export JAVA_HOME=""
fi
if [ ! "$JAVA_HOME" ]; then
if [ ! "$EXPERIMENTAL_USE_JAVA7" ]; then
case `uname -s` in
Darwin)
export JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
@ -1333,6 +1347,20 @@ function set_java_home() {
export JAVA_HOME=/usr/lib/jvm/java-6-sun
;;
esac
else
case `uname -s` in
Darwin)
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home
;;
*)
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
;;
esac
fi
# Keep track of the fact that we set JAVA_HOME ourselves, so that
# we can change it on the next envsetup.sh, if required.
export ANDROID_SET_JAVA_HOME=true
fi
}