web-dev-qa-db-ja.com

OS XでJava 7と8を切り替える

Java-8をインストールしました。デフォルトでJava-7に戻したかったので、次のように入力します...

/usr/libexec/Java_home -v 1.7.0_40 --exec Java -version
/usr/libexec/Java_home -v 1.7.0_40 --exec javac -version

しかし、私はまだ見ています...

Java -version
Java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b108)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b50, mixed mode)

これは機能します...

export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home

しかし、もっと恒久的な解決策が欲しいです。

誰かが私が間違っていることを知っていますか?

25
Jackie

バージョンを簡単に切り替える

  1. バージョン1.6、1.7、1.8を任意の順序でインストールします。 注:ブラウザプラグインに使用するプラグインは、最後にインストールされたプラグインによって決定されると思います。以下のものを変更する必要はありません。

  2. 次に、~/.bashrcまたは~/.bash_profile、または任意の場所に追加します。

    #!/bin/bash
    export Java_HOME=$(/usr/libexec/Java_home -v 1.7)
    
    setjdk() {
       export Java_HOME=$(/usr/libexec/Java_home -v $1)
    }
    
  3. Java -versionで変更を確認します

    $ Java -version
    Java version "1.7.0_51"
    Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
    Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)
    
    $ setjdk 1.6
    $ Java -version
    Java version "1.6.0_65"
    Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
    Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
    
    $ setjdk 1.8
    $ Java -version
    Java version "1.8.0"
    Java(TM) SE Runtime Environment (build 1.8.0-b132)
    Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
    

明らかに、変更はシェルの期間中のみです。しかし、どこにグローバルに設定できるかがわかります。

50
nkadwa

JEnv( http://www.jenv.be/ )を使用できます。これは、「JDKの異なるバージョンを切り替えるためにJava_HOME環境変数を設定する方法を忘れるのに役立つコマンドラインツールです。 "(プロジェクトのホームページから取得)。

Rubyに精通している場合、JEnvはRVMまたはrbenvを使用するようなものです。あるJDKから別のJDKに切り替えるために独自のスクリプトを記述する必要なく、マシンにインストールされているいくつかの異なるJDKを処理するのに役立ちます。現在のJavaバージョンは、現在のディレクトリや構成ファイルなどに基づいて変更できます。

9
Pietro Di Bello

Javaのバージョンを切り替えることはできません。 Documentation に、次のように表示されます。

一度にインストールできるJREは1つだけです。システムは、現在のバージョンより古いバージョンのJREをインストールしません。 JREの下位バージョンをインストールする場合は、まず現在のバージョンをアンインストールしてください。

古いバージョンに戻したい場合は、 アンインストール Java 8。

4
Christian

@nkadwaの答えを補足したい。彼の提案は機能しましたが、CurrentSDKのシンボリックリンクも変更した後でのみです。だからここに変更されたコードがあります:

setjdk() {
    export Java_HOME=$(/usr/libexec/Java_home -v $1)
    Sudo ln -nsf ${Java_HOME%/*} /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
}
setjdk 1.8
0
imdahmd