Miałem podobną sytuację w pracy, więc zrobiłem trochę badań i po kilku minutach konfiguracji przełączanie się między Java 6 i 7 (lub 7 i 8, w tym przypadku metoda to wersja agnostyczna).
Dla każdego z zainstalowaną wersją java /usr/libexec/java_home
pokaże katalog JAVA_HOME, ale jest szczególnie wydajny, gdy masz wiele wersji Java zainstalowanych side-by-side w OS X.
Używając -V
flaga, widać wszystko zainstalowanych maszyn JVM:
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
1.7.0_67, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home
1.6.0_65-b14-466.1, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_65-b14-466.1, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Możesz również uzyskać wartość JAVA_HOME dla określonej maszyny JVM w następujący sposób:
$ /usr/libexec/java_home -v 1.6
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
$ /usr/libexec/java_home -v 1.7
/Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home
Łącząc to wszystko, dodałem to do mojego ~ / .profile :
## java home
alias j6="export JAVA_HOME=\$(/usr/libexec/java_home -v 1.6);echo 'using Java 6'"
alias j7="export JAVA_HOME=\$(/usr/libexec/java_home -v 1.7);echo 'using Java 7'"
## manual switch for 1.6 or 1.7
j6 ## enable java 6 (or just run j6 in terminal)
## j7 ## enable java 7 (or just run j7 in terminal)
Widzicie więc, że mój terminal domyślnie obsługuje Java6, ale mogę to zmienić, wpisując po prostu j7
w linii poleceń (lub edytując plik ~ / .profile):
$ java -version
java version "1.6.0_65"
Java(TM) SE Runtime Environment (build 1.6.0_65-b14-466.1-11M4716)
Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-466.1, mixed mode)
$ j7
using Java 7
$ java -version
java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)