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


25

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

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

誰が私が間違っているのか分かりますか?

回答:


50

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

  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)
    

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


2
1つの問題:JDK8を既にお持ちの場合、JDK7はインストールを拒否します。404を提供する詳細については、oracle.comのURLを参照してください。そして、もちろん、JDK8 のアンインストール手順がまったく機能しないため、基本的に失われます。
エリックW


9

jEnv(http://www.jenv.be/)を使用できます。これは、「JAVA_HOME環境変数を設定してJDKの異なるバージョン間を切り替える方法を忘れるのを助けるコマンドラインツール」です(プロジェクトのホームページから取得) )。

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


これを拡張できますか?これは、答えではなくコメントのように見えます。
オースティンTフランス語

Rubyに慣れている場合は、RVMまたはrbenvを使用して、たとえば現在のディレクトリまたは構成ファイルに基づいて現在のJavaバージョンを変更するようなものです。JENVホームページにアクセスすると、良いチュートリアルがあります。
ピエトロディベロ

この投稿は回答を探しているすべての人を対象としているため、ここでの投稿の詳細は完全かつ適切な回答であると考えられます。
オースティンTフランス語

さらに情報を追加し、答えを少し拡大しました。これが今より良く見えることを願っています。フィードバックをお寄せいただきありがとうございます。
ピエトロディベロ

4

Javaバージョンを切り替えることはできません。ではドキュメントあなたは以下を参照してください。

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

古いバージョンに戻したい場合は、Java 8 をアンインストールする必要があります。


grrrに感謝しますが、これはOSXの私の意見を助けません。
ジャッキー

4
@Jackie:実際、これはOS Xとはほとんど関係ありませんが、Oracleとは関係がありません。AppleがOS X用JDKを保守していた頃、アクティブなJavaバージョンを切り替えるのは完璧で簡単でした。OS Xではなく、不正なインストーラーをOracleのせいにしてください。
Alessandro Vermeulen

@AlessandroVermeulenはすべての敬意を払って「インストーラー」ではありません。Linuxボックスのようなバージョンがプリインストールされたバージョンが付属していなかったらいいのにと思います。それから、とにかくUnixバイナリで「インストール」できました。そして、OSXの古いバージョンがあり、ブートする必要さえありました。私見では、問題を引き起こすのは絶対にOSXで使用される規則です。
ジャッキー

4
私のマシンには複数のJDKが正しくインストールされています。オラクルの設定プラグインは1.8から1.7への切り替えを許可していません。/ usr / libexecに/ JAVA_HOME -Vリスト、それらすべて-とJava 7環境設定パネルでは、Java 7のJREの選択許可
user151019

0

@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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.