Mac OS Xおよび複数のJavaバージョン


333

MacOSに追加のJavaをインストールするにはどうすればよいですか?私はjdk8をインストールしましたが、それはうまくいきます。しかし今、私は開発目的でjdk7のインストールが必要です。DMGファイルを介して古いバージョンをインストールしようとすると、新しいバージョンのJavaがすでにインストールされていてインストーラーが終了するという警告が表示されます。

/usr/libexec/java_home -verbose
Matching Java Virtual Machines (1):
    1.8.0_20, x86_64:   "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

   /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home

これに加えてjdk7をインストールする方法は?

ありがとう
Dakky

回答:


493

Macで複数のJavaバージョンを管理する最もクリーンな方法は、を使用することHomebrewです。

そして内でHomebrew、以下を使用します:

  • homebrew-cask Javaのバージョンをインストールするには
  • jenv インストールされているJavaのバージョンを管理する

http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.htmlに見られるように、これらは従うべきステップです。

  1. 自作をインストールする
  2. 自作jenvをインストールする
  3. homebrew-caskをインストールする
  4. caskを使用して特定のJavaバージョンをインストールします(以下の「homebrew-caskバージョン」の段落を参照)
  5. このバージョンをjenvに追加して管理します
  6. バージョンがjenvによって正しく管理されていることを確認してください
  7. 必要なJavaのバージョンごとに手順4〜6を繰り返します。

自作キャスクバージョン

次をhomebrew/cask-versions使用して自作にタップを追加します:

brew tap homebrew/cask-versions

次に、利用可能なすべてのバージョンを確認できます。

brew search java

次に、好きなバージョンをインストールできます:

brew cask install java7
brew cask install java6

そして、通常どおりjenvで管理するように追加します。

jenv add <javaVersionPathHere>

これは、最もクリーンで簡単な方法だと思います。


Mac OS X 10.6.7 Java Path Current JDKの混乱で言及されているように、もう1つ重要な注意点があります

異なるタイプのJDKまたはインストールでは、異なるパスが存在します。

を使用してインストールされたバージョンのパスを確認できます。JavaJDKがMacにインストールされているかどうかを確認する方法を/usr/libexec/java_home -V参照してください。

Mac OS X Mavericksでは、次のように見つかりました。

1)組み込みJREデフォルト: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home

2)AppleからダウンロードしたJDK: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/

3)OracleからダウンロードしたJDK: /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home


資源


16
homebrew-caskはEmacsプラグインのbrew install caskroom/cask/brew-cask代わりにコマンドでインストールできることを述べておいbrew install caskたほうがいいでしょう。
Unnawut 2015

7
このソリューションの実装中にいくつかの問題jenvNo such file or directory.発生しました。その1つはエラーを返すことでした。このウィキは私のためにそれを解決するのに役立ちました。github.com/gcuisinier/jenv/wiki/Trouble-Shooting
Junil

10
私は、すべてのJavaインストールが含まれることを追加/Library/Java/JavaVirtualMachines/jenv addます/Library/Java/JavaVirtualMachines/[specific-version]/Contents/Home/。それらを追加するときに、次のようなパスを追加します。乾杯!
Nikolay Tsenkov 2016年

14
2017年6月23日現在、私は実行しbrew cask search java7ましたが、「java7」のCaskが見つかりませんでした。
Mingliang Liu 2017

4
@MingliangLIUうん私も...それは本当に吸います。Githubでこれに関する問題を見つけました。彼らはいくつかの回避策について言及していましたが、機能させることができませんでした。そのため、AppleとOracleの「Javaバージョンのダウンロードとインストール」のWebページから「手動で」行う必要がありました。次に、を使用/usr/libexec/java_home -Vして、これらがインストールされているパスを再確認します。
Adrien Be

304

jdk8をアンインストールし、jdk7をインストールして、jdk8を再インストールします。

それらを切り替えるための私のアプローチ(.profile内):

export JAVA_7_HOME=$(/usr/libexec/java_home -v1.7)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)

alias java7='export JAVA_HOME=$JAVA_7_HOME'
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'

#default java8
export JAVA_HOME=$JAVA_8_HOME

次に、単に入力するjava7か、java8、ターミナルに入力してバージョンを切り替えます。

(編集:Java 9のDylans改善を追加するために更新)


18
これまでのところ、これは私にとって最良のオプションです。単純なコマンド「java8」または「java7」を使用して、任意のバージョンに簡単に切り替えることができます。助けてくれてありがとう
MMHMasu

4
すごい !:)そして、私のような他の人のために使用できます:ls / Library / Java / JavaVirtualMachinesは、利用可能なバージョンを確認します。その後、異なる1.8.xバージョンに切り替えることができます。また、エクスポートPATH = $ JAVA_HOME / bin:$ PATHを追加する必要があります
Nico

4
これをありがとう。私は、jdk8の後にjdk7をインストールすることでこれをなんとかしたことを述べたかっただけです(jdk8をアンインストールする必要はありません)。
タイタス

6
Dunnoがjenvで時間を無駄にした理由は、これが機能するだけであり、jenv initを使用してシェルの起動が0.5秒で乱雑にならないためです。
cvakiitho 2017

2
あなたはこの方法でJava 9作業を取得しようとしている場合は、Javaの9のためのJAVA_HOMEにバージョン引数は、単純にする必要があります9例えばexport JAVA_9_HOME=$(/usr/libexec/java_home -v9)
ディランNissley

125

macOS Sierra 420の場合

このガイドはさまざまなソース(上記の返信や他の投稿)からまとめられており、完璧に機能します。

0.まだの場合は、homebrewをインストールします。

見る https://brew.sh/をください

1. jenvをインストールします

brew install jenv

2. jashをbashプロファイルに追加します

if which jenv > /dev/null; then eval "$(jenv init -)"; fi

3. jenvをパスに追加します

export PATH="$HOME/.jenv/shims:$PATH"

4.「caskroom / versions」をタップします

参考: "Tap"は、brewのデフォルトの利用可能なリポジトリのリストを超えて、インストールできるbrewの利用可能なリポジトリのリストを拡張します。

brew tap caskroom/versions

5.最新バージョンのJavaをインストールする

brew cask install java

6. Java 6(または必要に応じて7または8)をインストールします。

brew cask install java6
#brew cask install java7
#brew cask install java8

?ターミナルを閉じて再起動すると、セットアップされた新しいENV変数が表示されます。

7.インストールの確認

すべてのJavaバージョンがここにインストールされます:/Library/Java/JavaVirtualMachines見てみましょう。

ls -la /Library/Java/JavaVirtualMachines

8.各パスを一度にjenvに追加します。

「/ Contents / Home」をバージョンフォルダに追加する必要があります。警告:使用マシン上の実際のパス...これらはちょうどある

jenv add /Library/Java/JavaVirtualMachines/1.6.0___EXAMPLE___/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk___EXAMPLE___/Contents/Home

9. jenvが登録されているかどうかを確認します

jenv versions

10.使用するJavaバージョンを設定します(ほぼ)

ここで、XXは上記のバージョンリストの項目の1つと一致します。

jenv global XX

Javaのバージョンを確認する

java -version

jenvのバージョンを確認する

アスタリスク付きで使用されている現在のバージョンも示す必要があります。

jenv versions

完了


クイックリファレンス

Javaのバージョンを変更するには

...利用可能なJavaバージョンのリストを参照してください

jenv versions

...次に、XXは上記のリストの項目に一致します

jenv global XX

1
また、後に端末を再起動brew cask install java*
squeeish

1
ステップごとの明確で素晴らしい説明。
Ritesh Singh

1
エラー:Cask 'java8'は使用できません:この名前のCaskは存在しません。
Alexey Sh。

6
java8 / 9/10 arentはキャスクとしてもう利用できません。代わりにこれを試してください: "brew cask install Applyopenjdk / openjdk / adoptopenjdk8"
supi

1
brew tap caskroom/versionsする必要がありますbrew tap homebrew/cask-versions
Vyacheslav Cotruta

42

SDKMAN!Mac OSでJava、Gradle、Groovy、Kotlin、およびその他のJVMツールの複数のバージョンを使用するための優れたツールです。インストールと使用法のドキュメントはメインサイトにあります。

(私は所属していません、ただ幸せなユーザーです)。

使用例として、ターミナルウィンドウで次のように入力すると、利用可能なJava SDKバージョンのリストが表示されます(簡潔にするために編集されています)。

$ sdk list java
Available Java Versions
   + 9ea170                                                                        
 > + 8u131                                                                         
     7u141-zulu                     

ここで+は、バージョンがインストールされていることを示します。>現在使用中のバージョンを示します。バージョンをインストールするには:

$ sdk install java 7u141-zulu

このターミナルウィンドウでバージョンを使用するには:

$ sdk use java 9ea170

sdkmanは、Java 1.7以降のバージョンをサポートしています。Java 1.6を使用する場合は、このソリューションは適していない可能性があります。
AykutAkıncı2018

sdkmanは素晴らしいですが、バージョン内の特定のリリースをサポートしていません。たとえば、Datastax Dev Centerは1.8.0_151でのみ機能しますが、sdkmanではそれを指定できません。うまくいけば、彼らはより多くのバージョンを追加します。
Eduardo Dennis

ローカルバージョンがある場合は、SDKMan-sdkman.io/ usage#localversionにインストールできると思います(ただし、まだ試していません)
Michael Easter

6

このWebサイトにある ように、jEnvをインストールすることから始めましょう。

  1. ターミナルでこれを実行します

    brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
  2. jEnvをbashプロファイルに追加する

    if which jenv > /dev/null; then eval "$(jenv init -)"; fi
  3. 最初にインストールしたとき、jEnvにはJDKが関連付けられていません。

    たとえば、JDK 8をインストールしたばかりですが、jEnvはそれを認識していません。jEnvでJavaのバージョンを確認するには

    現時点では、システム上にJavaバージョン(jre)しか見つかりませんでした。*ショーバージョンは、現在選択されています。rvmやrbenvとは異なり、jEnvはJDKをインストールできません。Oracle WebサイトからJDKを手動でインストールする必要があります。

  4. Apple WebサイトからJDK 6をインストールします。これにより、Javaがにインストールされ/System/Library/Java/JavaVirtualMachines/ます。Apple WebサイトからJava 6をインストールする理由は、SUNがMAC用のJDK 6を思い付かなかったため、Appleが独自の展開バージョンを作成/変更したためです。

  5. 同様に、JDK7とJDK8をインストールします。

  6. JDKをjEnvに追加します。

    JDK 6:

    JDK 7: http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518ab9bc47d4.png

    JDK 8: http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abb2c1217.png

  7. jenvを使用してインストールされたJavaバージョンを確認する

    http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abceb0deb.png

  8. これで、システムに3つのバージョンのJavaがインストールされました。デフォルトのバージョンを設定するには、次のコマンドを使用します

    jenv local <jenv version>

    例-Jdk 1.6でIntelliJを起動したかった

    jenv local oracle64-1.6.0.65
  9. Javaのバージョンを確認してください

    java -version http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abe376dd0.png

それでおしまい。これで、Javaのバージョンが複数あり、それらを簡単に切り替えることができます。jEnvには、Gradle、Ant、Mavenなどのラッパーや、JVMオプションをグローバルまたはローカルに設定する機能など、他のいくつかの機能もあります。詳細については、ドキュメントをご覧ください。


5
コマンドの画像を入れないでください。コピー/貼り付けが難しくなります。コマンドを強調表示するには、単一の単語または短いコマンドにバッククォート「 `」を使用するか、コマンドを1行に4つのスペース(またはリストでは4の倍数)でインデントします。

1
関さん、ありがとう。私は画像を投稿するのに苦労しており、フォーマットに長い時間を費やしましたが、正しく理解できませんでした。バックティック情報を共有していただきありがとうございます。
Dinesh Arora 2016

4
同じ画像を4回使用した可能性があります。
Ellen Spertus、

5

私は最近Jabbaと呼ばれるこのJavaバージョンマネージャーを見つけました。使用方法は、rvm(ruby)、nvm(node)、pyenv(python)などの他の言語のバージョンマネージャーと非常に似ています。また、クロスプラットフォームなので、確実に使用できます。マック。

インストール後、〜/ .jabbaにディレクトリを作成して、インストールするすべてのJavaバージョンを配置します。「Oracle JDK(デフォルト)/サーバーJRE、Zulu OpenJDK(0.3.0以降)、IBM SDK、Java Technology Edition(0.6.0以降)およびカスタムURLからのインストールをサポートします。」

基本的な使用法はGithubに記載されています。開始する簡単な要約:

curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.sh

# install Oracle JDK
jabba install 1.8 # "jabba use 1.8" will be called automatically  
jabba install 1.7 # "jabba use 1.7" will be called automatically 

# list all installed JDK's
jabba ls

# switch to a different version of JDK
jabba use 1.8

4

Mac OS X 10.9.5を使用しています。これは、アプリケーションAを実行するために1つのバージョンが必要で、アプリケーションBに別のバージョンを使用する必要がある場合に、マシン上で複数のJDK / JREを管理する方法です。

オンラインでヘルプを入手した後、次のスクリプトを作成しました。

#!bin/sh
function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/Library/Java/JavaVirtualMachines/'
   if [ -n "${JAVA_HOME+x}" ]; then
    removeFromPath $JAVA_HOME
   fi
   export JAVA_HOME=/Library/Java/JavaVirtualMachines/$1/Contents/Home
   export PATH=$JAVA_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
#setjdk jdk1.8.0_60.jdk
setjdk jdk1.7.0_15.jdk

上記のスクリプトを.profileファイルに入れました。ターミナルを開き、vi .profileと入力し、上記のスニペットをスクリプトに追加して保存します。outタイプを入力source .profileすると、ターミナルを再起動しなくてもプロファイルスクリプトが実行されます。今入力しjava -version、それはあなたの現在のバージョンとして1.7を表示する必要があります。1.8に変更する場合は、その行setjdk jdk1.7.0_15.jdkをコメント化してコメントを外してくださいsetjdk jdk1.8.0_60.jdk。スクリプトを保存し、sourceコマンドで再度実行します。異なるJavaバージョンを必要とする2つの異なるMavenプロジェクトをコンパイルする必要がある場合、このメカニズムを使用してJDK / JREの複数のバージョンを管理します。


3

Mac SierraのJenv:

インストール後に機能しない場合は、このバグ修正を行って、Java実行可能ファイルをパスに追加します

export PATH="$HOME/.jenv/shims:$PATH"

eval "$(jenv init -)"この仕事をすることができたとしても。その理由は、ホームページに記載されているように/ binフォルダーがもう存在しないためです。代わりに、shimフォルダーが/ binとして使用されています。

  • 〜/ .jenvが存在することを確認してください
  • which java / Library / ...を出力するかもしれません
  • jenvグローバル1.8
  • jenvシェル1.8

最終的にwhich javaは、次のようになります。

/Users/xxxx/.jenv/shims/java


3

@Vegard(軽量)と同じ精神で:

  • Homebrewで必要なJDKをインストールする
  • このjdkbash関数とデフォルトを.profile

    jdk() {
        version=$1
        export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
        java -version
     }
    
    export JAVA_HOME=$(/usr/libexec/java_home -v11); # Your default version
  • そして、あなたのjdkを切り替えるには、あなたがすることができます

     jdk 9
     jdk 11
     jdk 13

https://github.com/AdoptOpenJDK/homebrew-openjdkに基づいています


0

これはbashのより乾燥したバージョンです(Vegardの回答に基づく)

1.7と1.8を必要なバージョンに置き換えれば、「javaX」というエイリアスが得られます。ここで「X」は、バージョンを簡単に切り替えることができるJavaバージョン(以下のスニペットでは7/8)です

for version in 1.7 1.8; do
    v="${version: -1}"
    h=JAVA_"$v"_HOME

    export "$h"=$(/usr/libexec/java_home -v $version)

    alias "java$v"="export JAVA_HOME=\$$h"
done

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