Wie wechsle ich unter OS X 10.8.2 zwischen Java 7 und Java 6?
Ich verwende Java SE 7, um einfache Spiele für Windows und Mac zu programmieren, aber ich muss zu Java 6 wechseln, um Spiele wie Minecraft auf meinem Computer auszuführen. Dies hat gut funktioniert, bevor ich auf Mac OS X 10.8.2 Build 12C60 aktualisiert habe.
Vor diesem Update konnte ich Java-Einstellungen öffnen und Java 6 oder Java 7 deaktivieren. Aber jetzt kann ich anscheinend keine Java-Einstellungen finden.
Ich verwende OS X 10.8.2 (neueste Version).
10 answers
Ich glaube nicht, dass es möglich ist, JRE (Runtime environments) zu wechseln, siehe hier:
Http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jre.html
Was besagt:
Es kann nur eine JRE installiert werden. Die Installation einer JRE entfernt die zuvor installierte JRE. Die vom System verwendete JRE-Version kann bestimmt werden auf zwei Arten:
Problemumgehung:
Ich hatte ein ähnliches Problem wie du mit Minecraft mit Wuala. Wo ich Wuala mit Java 1.6 ausführen musste, während ich mit JDK 1.7 entwickeln musste, und ich schaffte dies, indem ich die Wuala öffnete.app-Paket und Ändern des Startskripts in:
/Applications/Wuala.app/Contents/MacOS/wuala
Von:
exec java ${VMARGS} -cp "${JAR_DIR}/loader3.jar":/System/Library/Java/ com.wuala.loader3.Loader3 -alternateprogrampath "${JAR_DIR}" -installed $*
Bis:
/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 $*
Dh einfach ersetzen: exec
mit: /usr/libexec/java_home -v 1.6.0 --exec
Dies ist natürlich ziemlich involviert und wird jedes Mal kaputt gehen, wenn wuala autoupdates, aber sonst funktioniert es.
Um ein anderes JDK zu verwenden siehe hier:
Http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html
Was besagt:
Um eine andere Version von Java auszuführen, geben Sie entweder den vollständigen Pfad an oder verwenden Sie das java_home-Tool:
/usr/libexec/java_home -v 1.7.0_06 --exec javac -version
Hier ist eine illustration und Beispiele aus meinem setup:
Oracle JDK installiert:
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 geliefert 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 ./
Dies funktioniert auch für mich, um den mitgelieferten Apfel zu verwenden. 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)
Wählen Sie zwischen den folgenden Oracle-Versionen:
Auswahl des ersten 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)
Auswählen von 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)
Die Standard-JDK ist die höchste:
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)
Ist standardmäßig die höchste "Patch-Stufe", wenn nur eine untergeordnete Versionsnummer verwendet wird:
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)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-07-24 18:41:10
Man kann den java_home
Mechanismus bequemer benutzen.
Angenommen, Sie haben Java 7 als Standard:
$ java -version
java version "1.7.0_15"
…
Jetzt aktivieren wir Java 6:
$export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)
Und da ist es:
$ java -version
java version "1.6.0_41"
…
Ich habe diese zu meinem .bashrc
hinzugefügt, um die Dinge noch bequemer zu machen:
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
reduziert die Ausgabe von java_home -V
nur auf die Versionsnummern. Und java_use
ist nur eine Abkürzung für das, was wir oben getan haben. ZB wechselt java_use 1.6
zu Java 6.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-04-02 06:30:05
Eine Lösung zum einfachen Umschalten des JDK (nicht sicher über JRE), funktioniert mit jeder JDK-Version, nicht nur 6 und 7 (Quelle):
Bash shell, fügen Sie diese Funktion zu Ihrem .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 $@`
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:?;;")
}
Fischschale, speichere diese Funktion als ~/.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
Verwendung:
$ setjdk 1.7
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2021-01-17 21:05:46
Eine schnelle Problemumgehung besteht darin, einen Symlink zur alten Java 6-Binärdatei zu erstellen:
sudo ln -s /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Commands/java /usr/local/bin/java6
Dann führen Sie die Apps mit: java6-jar myapp.jar -
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-10-23 09:02:28
Die Java preferences App scheint Java 1.6 nicht mehr aufzulisten. Wenn ich jedoch die Java-Version in der Befehlszeile überprüfe, erhalte ich:
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)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2012-10-21 14:58:46
Es ist ziemlich einfach, Java-Versionen sofort unter OS X zu wechseln, ohne die Variable $JAVA_HOME ändern zu müssen.
Ich verwende 10.8.2 und meine Variable $JAVA_HOME zeigt auf /Library/Java / Home
echo $JAVA_HOME
Dieser Pfad ist ein symbolischer Link, wie durch Ausführen des Befehls ls-l
ls -la /Library/Java
Der symbolische Standardlink zeigt auf
Startseite -> /Library/Java/JavaVirtualMachines/1.6.0_33-b03-424.jdk/Contents/Home/
Um Java auf mein 1.7 umzuleiten installation, ich ersetze nur den alten Home-Symlink durch einen neuen Symlink, der auf das Home-Verzeichnis meiner Java 1.7-Installation verweist.
cd /Library/Java
mv Home Home-1.6
ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/ Home
Und voila! java -version zeigt, dass ich jetzt mit java 1.7. Wechseln Sie einfach, welcher Symlink derzeit "Home" heißt, um die Standard-Java-JRE sofort zu ändern.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-05-16 22:11:30
Hier ist eine einfache Möglichkeit, Java 6 und Java 7 unter Mac osx zu wechseln.
Schritt 1: Laden Sie jdk 7 von der offiziellen Oracle-Website herunter http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html und installieren Sie es Schritt für Schritt folgen Sie den Tipps.
Schritt 2: Setzen Sie $JAVA_HOME in .bash_profile
$ vim .bash_profile
export JAVA_HOME=$(/usr/libexec/java_home)
$ source .bash_profile
$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home
Schritt 3: Wenn Sie jdk 6 verwenden möchten, fügen Sie einfach $JAVA_HOME zu jdk 6 home path
$ vim .bash_profile
export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)
$ source .bash_profile
$ echo $JAVA_HOME
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-11-12 10:15:22
Verwalten Sie Ihre Java-Umgebung (unter Mac und Linux): http://www.jenv.be/
Ähnlich wie RVM für Ruby und N für Node, aber für Java.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-06-10 17:02:51
Basierend auf dem obigen und ein wenig anderer Forschung habe ich ein Skript entwickelt, das Sie "Quelle" (oder "Punkt") in Ihr Profil. Es wird Sie mit einem Menü der verfügbaren JAVA_HOMEs auf Ihrem Mac auffordern, obwohl Sie auch die Standard-Home angeben können, oder eine Menüauswahl vorwählen.
In meinem .bash_profile
:
export PREJAVA_PATH="$PATH:~/bin"
export PATH="${PREJAVA_PATH}"
. gojava -d
Hinweis: es erfordert eine variable PREJAVA_PATH
. Sie können es auch über die Befehlszeile aufrufen:
$ . gojava
Oder um die zweite Option vorzuwählen:
$ . gojava -c 2
Datei - gojava
ist:
#!/bin/bash
_exe=/usr/libexec/java_home
_defaultHome=$($_exe)
usage() {
cat <<EOF
$0 [-d] [-c menu_choice]
Sets JAVA_HOME and PATH variables based on a user choice from a menu of available JDKs.
Parameters:
-d : use system default ($_defaultHome)
-c : specify a menu choice in advance, without being prompted
Note that environment variable PREJAVA_PATH must be set, and should include the PATH that
you want with everything but JAVA_HOME/bin.
EOF
exit 1
}
setHomePath() {
export JAVA_HOME="$1"
export PATH="${JAVA_HOME}/bin":"${PREPATH}"
}
# TODO: [enhancement] figure out a better way to determine a PATH that excludes the JAVA_HOME
if [ -z "${PREJAVA_PATH}" ]; then
usage
else
PREPATH=${PREJAVA_PATH}
fi
_default=0
_choice=0
OPTIND=1
while getopts "dc:" name; do
case $name in
d) _default=1 ;;
c) _choice="$OPTARG" ;;
*) echo "unknown parameter $name"
usage
;;
esac
done
if [ $_default -eq 1 ]; then
setHomePath "$_defaultHome"
else
i=1
while read -r line; do
choiceList[$i]="$line"
homeList[$i]=$(echo $line | sed 's/[^\/]*\(\/.*\)/\1/')
i=$(($i+1))
done < <($_exe -V 2>&1 | egrep -v '^$|^\/|^Matching')
if [ $_choice -gt 0 -a $_choice -lt $i ]; then
setHomePath "${homeList[$_choice]}"
else
printf "\nList of available Java versions:\n"
select choice in "${choiceList[@]}"; do
if [ $REPLY -gt 0 -a $REPLY -lt $i ]; then
setHomePath "${homeList[$REPLY]}"
break
fi
done
fi
fi
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-02-21 14:39:16
Die Fisch-Shell-Version von @alex Antwort (hinzufügen zu ~/config/fish/config.fish
):
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
set JAVA_HOME (/usr/libexec/java_home -v $argv)
set PATH $JAVA_HOME/bin $PATH
java -version
end
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-03-12 13:10:22