How do I switch between Java 7 and Java 6 on OS X 10.8.2?
Rise to the top 3% as a developer or hire one of them at Toptal: https://topt.al/25cXVn
--------------------------------------------------
Music by Eric Matyas
https://www.soundimage.org
Track title: Quirky Dreamscape Looping
--
Chapters
00:00 How Do I Switch Between Java 7 And Java 6 On Os X 10.8.2?
00:40 Answer 1 Score 3
00:58 Answer 2 Score 7
01:15 Accepted Answer Score 41
03:38 Answer 4 Score 99
04:24 Thank you
--
Full question
https://superuser.com/questions/490425/h...
--
Content licensed under CC BY-SA
https://meta.stackexchange.com/help/lice...
--
Tags
#macos #osxmountainlion #java
#avk47
ANSWER 1
Score 99
One can use the java_home
mechanism more conveniently.
Say you have Java 7 as the default:
$ java -version
java version "1.7.0_15"
…
Now let’s activate Java 6:
$export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)
And there it is:
$ java -version
java version "1.6.0_41"
…
I added these to my .bashrc
in order to make things even more convenient:
alias java_ls='/usr/libexec/java_home -V 2>&1 | grep -E "\d.\d.\d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home'
function java_use() {
export JAVA_HOME=$(/usr/libexec/java_home -v $1)
export PATH=$JAVA_HOME/bin:$PATH
java -version
}
java_ls
reduces the output of java_home -V
to just the version numbers. And java_use
is just a shortcut for what we did above. E.g. java_use 1.6
will switch to Java 6.
ACCEPTED ANSWER
Score 41
I don't think it's possible to switch JRE (runtime environments) see here:
http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jre.html
which states:
Only one JRE can be installed. Installing a JRE removes the previously installed JRE. The JRE version used by the system can be determined in one of two ways:
Workaround:
I had a similar problem like you have with Minecraft with Wuala. Where I needed to run Wuala using Java 1.6 whilst I needed to develop with JDK 1.7 and I managed this by opening the Wuala.app package and changing its startup script in:
/Applications/Wuala.app/Contents/MacOS/wuala
from:
exec java ${VMARGS} -cp "${JAR_DIR}/loader3.jar":/System/Library/Java/ com.wuala.loader3.Loader3 -alternateprogrampath "${JAR_DIR}" -installed $*
to:
/usr/libexec/java_home -v 1.6.0 --exec java ${VMARGS} -cp "${JAR_DIR}/loader3.jar":/System/Library/Java/ com.wuala.loader3.Loader3 -alternateprogrampath "${JAR_DIR}" -installed $*
I.e simply replacing: exec
with: /usr/libexec/java_home -v 1.6.0 --exec
This is of course rather involved and will get broken every time wuala autoupdates but otherwise it works.
To use another JDK see here:
http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html
which states:
To run a different version of Java, either specify the full path, or use the java_home tool:
/usr/libexec/java_home -v 1.7.0_06 --exec javac -version
Here is an illustration and examples from my setup:
Oracle JDK installs:
odin:~ geff$ ls -al /Library/Java/JavaVirtualMachines
total 0
21058660 0 drwxr-xr-x 3 root wheel - 102 24 Oct 18:04:33 2012 jdk1.7.0_09.jdk/
21061692 0 drwxr-xr-x 3 root wheel - 102 24 Oct 18:06:08 2012 jdk1.7.0_07.jdk/
21042328 0 drwxrwxr-x 3 root wheel - 102 20 Apr 06:58:53 2012 1.7.0.jdk/
21031664 0 drwxrwxr-x 7 root admin - 238 24 Oct 18:04:16 2012 ../
21042327 0 drwxr-xr-x 5 root wheel - 170 24 Oct 18:06:13 2012 ./
Apple supplied JDK:
odin:~ geff$ ls -al /System/Library/Java/JavaVirtualMachines
total 0
21026468 0 drwxr-xr-x 3 root wheel - 102 1 Nov 17:49:02 2011 1.6.0.jdk/
21026436 0 drwxr-xr-x 6 root wheel - 204 24 Mar 23:04:06 2012 ../
21026467 0 drwxr-xr-x 3 root wheel - 102 1 Nov 17:49:02 2011 ./
This works for me also to use the Apple supplied 1.6 JDK
odin:~ geff$ /usr/libexec/java_home -v 1.6.0_37 --exec java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
Choose between the 1.7 Oracle versions:
Selecting the first Oracle JDK 1.7.0_04
odin:~ geff$ /usr/libexec/java_home -v 1.7.0_04 --exec java -version
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)
Selecting JDK 1.7.0_07
odin:~ geff$ /usr/libexec/java_home -v 1.7.0_07 --exec java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)
The default JDK is the highest one:
odin:~ geff$ java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
Defaults to the highest "patch level when using only minor version number:
odin:~ geff$ /usr/libexec/java_home -v 1.7.0 --exec java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
ANSWER 3
Score 7
A quick workaround is to create a symlink to the old Java 6 binary:
sudo ln -s /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Commands/java /usr/local/bin/java6
Then run the apps with: java6 -jar myapp.jar
ANSWER 4
Score 3
The Java preferences app doesn't seem to list Java 1.6 anymore. However when I check java version in the command line I get:
java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)