Java >> Java tutorial >  >> Tag >> switch

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

Java tag