私はJava SE 7を使ってWindowsやMac用の簡単なゲームをプログラムしていますが、私のコンピュータでMinecraftのようなゲームを実行するにはJava 6に切り替える必要があります。 Mac OS X 10.8.2 Build 12C60にアップデートする前は、これで問題なく動作していました。
今回のアップデートの前は、Java Preferencesを開いてJava 6またはJava 7をチェックオフすることができましたが、今ではJava Preferencesを見つけることができないようです。
OS X 10.8.2(最新バージョン)を使用しています。
http://docs.Oracle.com/javase/7/docs/webnotes/install/mac/mac-jre.html
どの州:
インストールできるJREは1つだけです。 JREをインストールすると、以前にインストールしたJREが削除されます。システムによって使用されるJREバージョンは、次の2つの方法のいずれかで判断できます。
Minecraft with Wualaにも同じような問題がありました。 Java 1.6を使ってWualaを実行する必要があり、JDK 1.7で開発する必要があった場合は、Wuala.appパッケージを開いてその起動スクリプトを次の場所に変更して管理しました。
/Applications/Wuala.app/Contents/MacOS/wuala
から:
exec Java ${VMARGS} -cp "${JAR_DIR}/loader3.jar":/System/Library/Java/ com.wuala.loader3.Loader3 -alternateprogrampath "${JAR_DIR}" -installed $*
に:
/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 $*
単に:exec
を:/usr/libexec/Java_home -v 1.6.0 --exec
に置き換えるだけです。
もちろんこれはかなり複雑で、自動アップデートするたびに失敗するでしょうが、そうでなければうまくいきます。
http://docs.Oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html
どの州:
別のバージョンのJavaを実行するには、フルパスを指定するか、またはJava_homeツールを使用します。
/usr/libexec/Java_home -v 1.7.0_06 --exec javac -version
これが私の設定のイラストと例です。
Oracle JDKがインストールされます。
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 ./
アップルは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 ./
これは私がアップルが提供する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)
1.7のOracleバージョンから選択してください。
最初の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)
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)
デフォルトのJDKは最も高いものです。
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)
マイナーバージョン番号のみを使用すると、デフォルトの最高の "パッチレベルが適用されます。
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)
Java_home
メカニズムをもっと便利に使うことができます。
デフォルトとしてJava 7があるとします。
$ Java -version
Java version "1.7.0_15"
…
それでは、Java 6を起動しましょう。
$export Java_HOME=$(/usr/libexec/Java_home -v 1.6)
そしてそれがあります:
$ Java -version
Java version "1.6.0_41"
…
さらに便利にするために、これらを.bashrc
に追加しました。
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
は、Java_home -V
の出力をバージョン番号だけに減らします。そしてJava_use
は、上で行ったことへの近道にすぎません。例えば。 Java_use 1.6
はJava 6に切り替わります。
JDKを簡単に切り替えるための解決策(JREについてはわからない)( source ):
function setjdk() {
if [ $# -ne 0 ]; then
removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'
if [ -n "${Java_HOME+x}" ]; then
removeFromPath $Java_HOME
fi
export Java_HOME=`/usr/libexec/Java_home -v $@`
export PATH=$Java_HOME/bin:$PATH
fi
echo Java_HOME set to $Java_HOME
Java -version
}
function removeFromPath() {
export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
}
(上記の関数をあなたの.bash_profile
に追加してください)
使用法:
$ setjdk 1.7
簡単な回避策は、古いJava 6バイナリへのシンボリックリンクを作成することです。
Sudo ln -s /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Commands/Java /usr/local/bin/Java6
次に、Java6 -jar myapp.jarを使用してアプリを実行します。
これは、Mac OS XでJava 6とJava 7を切り替える簡単な方法です。
ステップ1:オラクルの公式Webサイトからjdk 7をダウンロードしてください http://www.Oracle.com/technetwork/Java/javase/downloads/jdk7-downloads-1880260.html そしてそれはステップバイステップのヒントに従ってインストールしてください。
ステップ2:.bash_profileに$ Java_HOMEを設定する
$ 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
ステップ3:jdk 6を使用したい場合は、jdk 6ホームパスの代わりに$ Java_HOMEを使用してください。
$ 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
$ Java_HOME変数を変更する必要なしにOS X上でJavaバージョンを即座に切り替えるのはとても簡単です。
私は10.8.2を実行していて、私の$ Java_HOME変数は/ Library/Java/Homeを指しています。
echo $Java_HOME
Ls -lコマンドを実行してわかるように、このパスはシンボリックリンクです。
ls -la /Library/Java
デフォルトのシンボリックリンクは、
ホーム - > /Library/Java/JavaVirtualMachines/1.6.0_33-b03-424.jdk/Contents/Home/
Javaを私の1.7インストールにリダイレクトするために、私は単に古いHomeシンボリックリンクを私のJava 1.7インストールのホームディレクトリを指す新しいシンボリックリンクに置き換えるだけです。
cd /Library/Java
mv Home Home-1.6
ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/ Home
そして、やあ! Java -versionは、私が現在Java 1.7を実行していることを示しています。デフォルトのJava JREを即座に変更するには、現在どのシンボリックリンクを 'Home'という名前に変更するだけです。
Java環境を管理します(MacおよびLinux): http://www.jenv.be/
Ruby用のRVMおよびNode用のNと似ていますが、Java用です。
Java設定アプリケーションには、Java 1.6が表示されなくなりました。ただし、コマンドラインでJavaのバージョンを確認すると、次のようになります。
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)
上記と他のちょっとした調査に基づいて、私はあなたがあなたのプロフィールに「ソース」(または「ドット」)できるスクリプトを考案しました。 Macで利用可能なJava_HOMEのメニューが表示されますが、デフォルトのホームを指定することも、メニューの選択肢を事前に選択することもできます。
私の.bash_profile
で:
export PREJAVA_PATH="$PATH:~/bin"
export PATH="${PREJAVA_PATH}"
. gojava -d
変数PREJAVA_PATH
が必要です。コマンドラインから呼び出すこともできます。
$ . gojava
または2番目のオプションを事前に選択するには:
$ . gojava -c 2
ファイルgojava
は次のとおりです。
#!/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
フィッシュシェル版の@alex answer(~/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