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
しかし、もっと恒久的な解決策が欲しいです。
誰かが私が間違っていることを知っていますか?
バージョンを簡単に切り替える
バージョン1.6、1.7、1.8を任意の順序でインストールします。 注:ブラウザプラグインに使用するプラグインは、最後にインストールされたプラグインによって決定されると思います。以下のものを変更する必要はありません。
次に、~/.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)
}
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)
明らかに、変更はシェルの期間中のみです。しかし、どこにグローバルに設定できるかがわかります。
JEnv( http://www.jenv.be/ )を使用できます。これは、「JDKの異なるバージョンを切り替えるためにJava_HOME環境変数を設定する方法を忘れるのに役立つコマンドラインツールです。 "(プロジェクトのホームページから取得)。
Rubyに精通している場合、JEnvはRVMまたはrbenvを使用するようなものです。あるJDKから別のJDKに切り替えるために独自のスクリプトを記述する必要なく、マシンにインストールされているいくつかの異なるJDKを処理するのに役立ちます。現在のJavaバージョンは、現在のディレクトリや構成ファイルなどに基づいて変更できます。
Javaのバージョンを切り替えることはできません。 Documentation に、次のように表示されます。
一度にインストールできるJREは1つだけです。システムは、現在のバージョンより古いバージョンのJREをインストールしません。 JREの下位バージョンをインストールする場合は、まず現在のバージョンをアンインストールしてください。
古いバージョンに戻したい場合は、 アンインストール Java 8。
@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