5

Java のバージョンを切り替える必要がありますMac OS X 10.8.4が、方法がわかりません。現在のバージョンは次のとおり1.6.0_51ですが、次のバージョンに切り替えたいと考えてい1.6.0_45ます。

$java -バージョン
Java バージョン「1.6.0_51」
Java(TM) SE ランタイム環境 (ビルド 1.6.0_51-b11-457-11M4509)
Java HotSpot(TM) 64 ビット サーバー VM (ビルド 20.51-b01-457、混合モード)

/usr/libexec/java_home -v 1.6.0_43
バージョン「1.6.0_43」に一致する JVM が見つかりません。
/システム/ライブラリ/Java/JavaVirtualMachines/1.6.0.jdk/コンテンツ/ホーム

1.6.0_43私のMacのようなバージョンはないと思いますか?それをインストールしてから切り替えるにはどうすればよいですか?ありがとう!

4

4 に答える 4

4

この Web サイトの説明にあるように、「...この Java バージョンをシェルで切り替えるのは本当に面倒です...」ということで、この人は切り替えを行うためのツールを作成しました。あなたの理由がわからないので (本当にコマンド ラインから実行する必要がある場合)、あまり役に立たないかもしれませんが、Google で簡単に検索すると、このダウンロード可能なツールが Web サイトから見つかりました。

于 2013-08-06T00:22:08.490 に答える
1
  1. 必要な他の Java バージョンをインストールします。

  2. 1.6_XX と 1.7_XX を切り替える必要があったため、そのための小さなスクリプトを作成しました。それはその仕事をかなりうまくやっています。いくつかのものを交換する必要がありますが、おそらくそれが役立ちます:

    #!/bin/bash
    #v1.0.3
    #by Sapphire
    
    # /!\ Configuration /!\
    # vim ~/.bash_profile :
    # alias changej="sudo ~/Documents/changeJavaVers.sh"
    # sudo visudo -f /etc/sudoers :
    # #Custom privilege
    # user ALL=NOPASSWD: /Users/username/Documents/changeJavaVers.sh
    # change java dir's at (1) and (2)
    
    echo -e "\n***********************************************************"
    echo "*                EASY JAVA VERSION CHANGER                *"
    echo "***********************************************************"
    
    echo "Enter java version (6, 7, ..) or 'set' for settings"
    echo -n "Version: "
    read vers
    if [ "$vers" == "set" ]
    then
        echo "settings not implemented yet"
        #TODO open settings
        #set java home path, add java versions
        #current home: echo $JAVA_HOME
    elif (($vers == 6))
    then
        #(1)
        ln -fhsv /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/ /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
        export JAVA_HOME=`/usr/libexec/java_home -v 1.6+ -d32`
        echo -e "\n-----------------------------------------------------------"
        echo "                       JAVA VERSION"
        echo "-----------------------------------------------------------"
        java -version
        echo -e "\n-----------------------------------------------------------"
        echo "                        JAVA HOME"
        echo "-----------------------------------------------------------"
        echo $JAVA_HOME
        echo "***********************************************************"
    elif (($vers == 7))
    then
        #(2)
        ln -fhsv /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/ /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
        export JAVA_HOME=`/usr/libexec/java_home`
        echo -e "\n-----------------------------------------------------------"
        echo "                       JAVA VERSION"
        echo "-----------------------------------------------------------"
        java -version
        echo -e "\n-----------------------------------------------------------"
        echo "                        JAVA HOME"
        echo "-----------------------------------------------------------"
        echo $JAVA_HOME
        echo -e "\n***********************************************************"
    
    else
        echo -e "\ninvalid input - available java versions: 6, 7"
    fi
    

編集 ここで新しいバージョンを入手しました。OSX 10.9.3で動作します

#!/bin/bash
#v1.1.0
#last change: 12 June 2014
#by Sapphire

# /!\ Configuration /!\
# vim ~/.bash_profile :
# alias changej="sudo ~/Documents/changeJavaVers.sh"
# sudo visudo -f /etc/sudoers :
# #Custom privilege
# user ALL=NOPASSWD: /Users/username/Documents/changeJavaVers.sh
# change java directories (1), (2)

echo -e "\n***********************************************************"
echo "*                EASY JAVA VERSION CHANGER          v1.1.0 *"
echo "***********************************************************"

echo "Enter java version (6, 721, 745, 760) or 'set' for settings"
echo -n "Version: "
read vers
if [ "$vers" == "set" ]
then
    echo "settings not implemented yet"
    #TODO open settings
    #set java home path, add java versions
    #current home: echo $JAVA_HOME
elif (($vers == 6))
then
    #(1)
    ln -fhsv /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/ /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
elif (($vers == 721))
then
    #(1)
    ln -fhsv /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/ /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
elif (($vers == 745))
then
    #(1)
    ln -fhsv /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/ /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
elif (($vers == 760))
then
    #(1)
    ln -fhsv /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/ /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
else
    echo -e "\ninvalid input - available java versions: (6, 721, 745, 760)"
    exit
fi
#(2)
export JAVA_HOME='/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home'
echo -e "\n-----------------------------------------------------------"
echo "                       JAVA VERSION"
echo "-----------------------------------------------------------"
java -version
echo -e "\n-----------------------------------------------------------"
echo "                        JAVA HOME"
echo "-----------------------------------------------------------"
echo $JAVA_HOME
echo -e "\n***********************************************************"
exit
于 2014-06-11T09:31:16.757 に答える
0

まったく新しいバージョンをダウンロードする必要はありません。あなたが本当に欲しいのはこれです:

-target version
Generate class files that target a specified version of the VM. Class files will run on the specified target and on later versions, but not on earlier versions of the VM. Valid targets are 1.1, 1.2, 1.3, 1.4, 1.5 (also 5), 1.6 (also 6), and 1.7 (also 7).
The default for -target depends on the value of -source:

If -source is not specified, the value of -target is 1.7
If -source is 1.2, the value of -target is 1.4
If -source is 1.3, the value of -target is 1.4
If -source is 1.5, the value of -target is 1.7
If -source is 1.6, the value of -target is 1.7
For all other values of -source, the value of -target is the value of -source.  

このソースから。ターゲット JVM とソース コード レベルを制御できます-target-sourceソースが言うように、の値targetはデフォルトでソースに指定した値になりますが、必要に応じて両方を制御できます。

このオプションで特定の十分なバージョンを提供できない場合は、なぜそのような正確なバージョンが必要なのか想像できませんが、弾丸を噛んで適切なバージョンを自分でダウンロードする必要があります.

于 2013-08-06T00:32:12.257 に答える