Hvordan skifter jeg mellem Java 7 og Java 6 på OS X 10.8.2?
Man kan bruge java_home
mekanisme mere bekvemt.
Lad os sige, at du har Java 7 som standard:
$ java -version
java version "1.7.0_15"
…
Lad os nu aktivere Java 6:
$export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)
Og der er det:
$ java -version
java version "1.6.0_41"
…
Jeg føjede disse til min .bashrc
for at gøre tingene endnu mere bekvemme:
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
reducerer outputtet på java_home -V
til kun versionsnumrene. Og java_use
er blot en genvej til det, vi gjorde ovenfor. For eksempel. java_use 1.6
skifter til Java 6.
Jeg tror ikke, det er muligt at skifte JRE (runtime-miljøer) se her:
http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jre.html
hvor der står:
Kun én JRE kan installeres. Installation af en JRE fjerner den tidligere installerede JRE. JRE-versionen, der bruges af systemet, kan bestemmes på en af to måder:
Løsning:
Jeg havde et lignende problem, som du har med Minecraft med Wuala. Hvor jeg skulle køre Wuala ved hjælp af Java 1.6, mens jeg skulle udvikle med JDK 1.7, og jeg klarede dette ved at åbne Wuala.app-pakken og ændre dets opstartsscript i:
/Applications/Wuala.app/Contents/MacOS/wuala
fra:
exec java ${VMARGS} -cp "${JAR_DIR}/loader3.jar":/System/Library/Java/ com.wuala.loader3.Loader3 -alternateprogrampath "${JAR_DIR}" -installed $*
til:
/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 $*
Dvs. blot at erstatte:exec
med:/usr/libexec/java_home -v 1.6.0 --exec
Dette er selvfølgelig ret involveret og vil gå i stykker hver gang wuala automatisk opdaterer, men ellers virker det.
For at bruge et andet JDK se her:
http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html
hvor der står:
For at køre en anden version af Java skal du enten angive den fulde sti eller bruge java_home-værktøjet:/usr/libexec/java_home -v 1.7.0_06 --exec javac -version
Her er en illustration og eksempler fra min opsætning:
Oracle JDK installerer:
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 leverede 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 ./
Dette fungerer også for mig at bruge den Apple-leverede 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)
Vælg mellem 1.7 Oracle-versionerne:
Valg af den første 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)
Vælger 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)
Standard JDK er den højeste:
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)
Standard til det højeste "patch-niveau, når der kun bruges mindre versionsnummer:
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)
En løsning til nemt at skifte JDK (ikke sikker på JRE), fungerer med enhver JDK-version, ikke kun 6 og 7 (kilde):
Bash shell , føj denne funktion til din .bash_profile
:
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
if [ -n "${JAVA_HOME+x}" ]; then
removeFromPath $JAVA_HOME
fi
unset JAVA_HOME # We need this on Big Sur, see https://developer.apple.com/forums/thread/666681
export JAVA_HOME=`/usr/libexec/java_home -v [email protected]`
export PATH=$JAVA_HOME/bin:$PATH
echo JAVA_HOME set to $JAVA_HOME
java -version
fi
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
Fiskeskal , gem denne funktion som ~/.config/fish/functions/setjdk.fish
:
function setjdk
if [ (count $argv) -ne 0 ]
set -x PATH (string match -v /System/Library/Frameworks/JavaVM.framework/Home/bin $PATH)
if [ -n "$JAVA_HOME" ]
set -x PATH (string match -v $JAVA_HOME $PATH)
end
set -e JAVA_HOME # We need this on Big Sur, see https://developer.apple.com/forums/thread/666681
set -x JAVA_HOME (/usr/libexec/java_home -v $argv)
set -x PATH $JAVA_HOME/bin $PATH
echo JAVA_HOME set to $JAVA_HOME
java -version
end
end
Brug:
$ setjdk 1.7