web-dev-qa-db-ja.com

Mac OS Xと複数のJavaバージョン

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をインストールする方法?

ありがとう
ダッキー

250
Dakkar

Mac上で複数のJavaバージョンを管理する最も簡単な方法は Homebrew を使うことです。

そしてHomebrewの中では、

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

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

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

自作キャスクバージョン

homebrew/cask-versions tapを自作語に追加します。

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パス現在のJDKで混乱しているように注意するべきもう一つの重要なことは

JDKやインストールの種類が異なると、パスも異なります。

/usr/libexec/Java_home -Vを使用してインストールされたバージョンのパスを確認できます。 Java JDKがMacにインストールされているかどうかを確認するにはどうすればいいですか?

Mac OS Xの異端者では、私は次のように見つけた:

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

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

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


リソース

382
Adrien Be

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改善を追加するために更新された)

236
Vegard

MacOS Sierra 420の場合

このガイドはさまざまな情報源から寄せ集められており(上記の返信や他の投稿)、完璧に機能しています。

0.まだインストールしていない場合は、自作をインストールします。

https://brew.sh/ を参照してください。

1. jenvをインストールする

brew install jenv

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

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

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

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

4. [caskroom/versions]をタップします

FYI: "Tap"は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.各パスを一度に1つずつjenvに追加します。

バージョンフォルダに "/ Contents/Home"を追加する必要があります。警告:あなたのマシンの実際のパスを使ってください。これらはEXAMPLEです

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
86
bob

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
33
Michael Easter

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

  1. 端末でこれを実行する

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

    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. アップルのWebサイトからJDK 6をインストールします。これでJavaが/System/Library/Java/JavaVirtualMachines/にインストールされます。 AppleのWebサイトからJava 6をインストールするのは、SunがMAC用のJDK 6を思い付かなかったため、Appleが独自のデプロイメントバージョンを作成または変更したためです。

  5. JDK 7とJDK 8も同様にインストールします。

  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. だから今私たちのシステムにはJavaの3つのバージョンがあります。デフォルトのバージョンを設定するには、次のコマンドを使います。

    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オプションを設定する機能など、その他の機能もあります。詳細についてはドキュメントをチェックしてください。

7
Dinesh Arora

私は最近このJavaバージョンマネージャが Jabba と呼ばれているのを見つけました。使い方はrvm(Ruby)、nvm(node)、pyenv(python)などの他の言語のバージョンマネージャと非常に似ています間違いなくそれはMac上で使用することができます。

インストール後、〜/ .jabbaにディレクトリを作成して、インストールしたすべてのJavaバージョンを配置します。 「Oracle JDK(デフォルト)/ Server 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
5
York Yang

Mac OS X 10.9.5を使用しています。これは、アプリケーションAを実行し、アプリケーションBに別のバージョンを使用するために1つのバージョンが必要なときに、マシン上で複数の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の複数のバージョンを管理します。

4
ChaitanyaBhatt

Mac Sierra上のJenv:

インストール後に動作しない場合は、パスにJava実行可能ファイルを追加するためにこのバグ修正を行います。

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

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

  • 〜/ .jenvがあることを確認してください
  • which Javaは/ Library /を印刷するかもしれません...
  • jenvグローバル1.8
  • jENVシェル1.8

結局、which Javaはあなたに与えます:

/Users/xxxx/.jenv/shims/Java

3
CodeFarmer

これはbashのためのより多くのDRYバージョンです(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
0
elad.chen