web-dev-qa-db-ja.com

バージョンを切り替えるためにMac OSXにJavaをインストールするにはどうすればよいですか?

OpenJDK JavaをMac OSXにインストールし、それが他のJDKと一緒に動作するようにしたいのですが、それは新しいリリースです。現在、tar.gzをダウンロードして自分のパスに配置しましたが、それを維持するのは困難です。

私が見つけた他の唯一のインストールは、Homebrew caskによるインストールです。それも現在のバージョンだけのように見えます:

brew cask info Java

示しています:

ジャワ:12,33
https://jdk.Java.net/

だから私はそこからインストールすることができますが、その後何?私は新しいバージョンだけで立ち往生していますか?

更新:2019年3月19日現在、自作キャスクはOpenJDK 12を指しています

140
Jayson Minard

注:これらのソリューションは、Javaを含むさまざまなバージョンのJavaで機能します11および新しいJava 12、およびリストされたバージョンマネージャーの対象となる以前のJavaバージョン。これには、OpenJDK、Oracle、IBM、Azul、Amazon Correto、Graalなどの代替JDKが含まれます。 Java 7、Java 8、Java 9、Java 10、Java 11、Java 12、さらには早期アクセスJava 13!

JDKの切り替えを管理するだけでなく、インストールの方法についてもいくつかのオプションがあります。 Homebrew、 SDKMANJabba 、または手動インストールによりインストールできます。切り替えは、 JEnvSDKMANJabba 、またはJava_HOMEを設定して手動で行うことができます。これらすべてを以下に説明します。


Installation

最初に、Homebrew、SDKMAN、またはtar.gzファイルの手動インストールなど、お好みの方法でJavaをインストールします。手動インストールの利点は、JDKの場所をMac OSXの標準化された場所に配置できることです。

SDKMANでインストールする

これは、インストールとバージョンの切り替えの両方を処理するという点で単純なモデルですが、JDKを非標準のディレクトリにインストールするという警告があります。

<以下の「SDKMANを使用したバージョンのインストールと切り替え」を参照>

Jabbaを使用してインストールする

これは、インストールとバージョン切り替えの両方が同じツールで処理されるという単純なモデルでもあります。インストールは、非標準のディレクトリに対して行われます。

<以下の「Jabbaを使用したバージョンのインストールと切り替え」を参照>

OpenJDKダウンロードページから手動でインストールします。

  1. http://jdk.Java.net/ からMac OSX用OpenJDKをダウンロードします

  2. OpenJDK tarのアーカイブを解除し、作成されたフォルダー(つまりjdk-12.jdk)を/Library/Java/JavaVirtualMachines/フォルダーに配置します。これはJDKインストールの標準および予想される場所であるためです。また、実際には任意の場所にインストールできます。

Homebrewでインストール

2018年10月3日より前のHomebrew Caskで利用可能なJavaのバージョンは、実際にはOracle JVMでした。ただし、現在はOpenJDKに更新されています。必ずHomebrewを更新すると、インストール可能な最新バージョンが表示されます。

  1. Homebrewをインストール まだインストールしていない場合。更新されていることを確認してください。

    brew update
    
  2. 樽のタップをまだ追加していない場合(または手順3で古いJavaバージョンが表示されていない場合):

    brew tap homebrew/cask-versions
    

    AdoptOpenJDK バージョンの場合、そのタップを追加します。

    brew tap adoptopenjdk/openjdk
    

    これらの樽はJavaバージョンを頻繁に変更します。また、追加のJavaバージョンで他のタップがあるかもしれません。

  3. インストール可能なバージョンを探します:

    brew search Java   
    

    またはAdoptOpenJDKバージョンの場合:

    brew search jdk     
    
  4. インストールされるバージョンの詳細を確認します。

    brew cask info Java
    

    またはAdoptOpenJDKバージョンの場合:

    brew cask info adoptopenjdk
    
  5. Java11adoptopenjdk8、または単に現在のJavaまたはadoptopenjdkなどの特定のバージョンのJDKをインストールします。例えば:

    brew cask install Java
    

    古いバージョンへの完全修飾パスも使用できます。

    brew cask install homebrew/cask-versions/Java11
    

そして、これらはMac OSXで予想される従来の場所である/Library/Java/JavaVirtualMachines/にインストールされます。

その他のインストールオプション:

OpenJDKの他のフレーバーは次のとおりです。

Azul Systems Java ZuluOpenJDKの認定ビルドは、 指示に従ってインストールできます彼らのサイトで

Zulu®は、Java SE標準に完全に準拠したOpenJDKの認定ビルドです。 Zuluは100%オープンソースであり、無料でダウンロードできます。 Java開発者、システム管理者、およびエンドユーザーは、オープンソースJavaのすべてのメリットを享受でき、展開の柔軟性とアップグレードタイミングの制御が可能になります。

Amazon Correto OpenJDKビルドには、バージョン8またはバージョン11(他のバージョンが登場予定)用の使いやすいインストールパッケージがあります。 Mac OSXの標準/Library/Java/JavaVirtualMachines/ディレクトリにインストールします。

Amazon Correttoは、Open Java Development Kit(OpenJDK)の無料で、マルチプラットフォームの、本番環境向けのディストリビューションです。 Correttoには、パフォーマンスの強化とセキュリティ修正を含む長期サポートが付属しています。 Amazonは数千のプロダクションサービスでCorrettoを内部で実行しており、CorrettoはJava SE標準との互換性があると認定されています。 Correttoを使用すると、Linux、Windows、macOSなどの一般的なオペレーティングシステムでJavaアプリケーションを開発および実行できます。


私のJDKはどこにありますか?!?!

以前にインストールされたJava JDKがデフォルトのシステムの場所にインストールされている場所を見つけるには、次を使用します。

/usr/libexec/Java_home -V

一致するJava仮想マシン(5):
12、x86_64: "OpenJDK 12" /Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
11、x86_64:「Java SE 11」/Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
10.0.2、x86_64:「Java SE 10.0.2」/Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
9、x86_64:「Java SE 9」/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home
1.8.0_144、x86_64:「Java SE 8」/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

-vを使用して、特定のJavaバージョンの場所のみを報告することもできます。 Java 12の例:

/usr/libexec/Java_home -v 12

/ライブラリ/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home

JEnvなどのツールを使用したり、SDKMANにローカルインストールを追加したり、JabbaでシステムJDKをリンクしたりする場合にも、インストールされたJDKの場所を知ることは役立ちます。

他のツールによってインストールされたJDKを見つける必要がある場合は、次の場所を確認してください。

  • SDKMANは~/.sdkman/candidates/Java/にインストールされます
  • Jabbaは~/.jabba/jdkにインストールします

バージョンを手動で切り替える

Java実行可能ファイルは、Java_HOMEで設定されているJDKを使用するラッパーなので、これを変更して、使用中のJDKも変更できます。

たとえば、JDK 12を/Library/Java/JavaVirtualMachines/jdk-12.jdkにインストールまたはuntarした場合、バージョン番号が最大であれば既にデフォルトになっているはずですが、そうでなければ単純に設定できます。

export Java_HOME=/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home

これで、パスにあるJava実行可能ファイルはすべてこれを認識し、正しいJDKを使用します。

前述の/usr/libexec/Java_homeユーティリティを使用すると、エイリアスを作成したり、さまざまなJDKインストールの場所を特定してJavaバージョンを変更するコマンドを実行したりできます。たとえば、.profileまたは.bash_profileでシェルエイリアスを作成して、Java_HOMEを変更します。

export Java_8_HOME=$(/usr/libexec/Java_home -v1.8)
export Java_9_HOME=$(/usr/libexec/Java_home -v9)
export Java_10_HOME=$(/usr/libexec/Java_home -v10)
export Java_11_HOME=$(/usr/libexec/Java_home -v11)
export Java_12_HOME=$(/usr/libexec/Java_home -v12)

alias Java8='export Java_HOME=$Java_8_HOME'
alias Java9='export Java_HOME=$Java_9_HOME'
alias Java10='export Java_HOME=$Java_10_HOME'
alias Java11='export Java_HOME=$Java_11_HOME'
alias Java12='export Java_HOME=$Java_12_HOME'

# default to Java 12
Java12

次に、バージョンを変更するには、エイリアスを使用します。

Java8
Java -version

Javaバージョン「1.8.0_144」

もちろん、Java_HOMEを手動で設定することもできます!


JEnvでバージョンを切り替える

JEnv は、Java JDKがマシン上にすでに存在し、任意の場所に存在できることを想定しています。通常、インストールされているJava JDKは/Library/Java/JavaVirtualMachines/にあります。 JEnvでは、Javaのグローバルバージョン、現在のシェル用、およびプロジェクトごとに異なるバージョンが必要な場合に便利なディレクトリごとのローカルバージョンを設定できます。

  1. まだインストールしていない場合はJEnvをインストールしてください。手動インストールまたはHomebrewを使用する場合は、サイトの指示 http://www.jenv.be/ を参照してください。

  2. JavaバージョンをJEnvに追加します(これを他の場所に配置した場合はディレクトリを調整します):

    jenv add /Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
    
  3. 次のコマンドを使用してグローバルバージョンを設定します。

    jenv global 12
    

同様の方法でjenv addを使用して他の既存のバージョンを追加し、使用可能なバージョンをリストすることもできます。たとえば、Java 8:

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home 
jenv versions

他のコマンドについては JEnv docs をご覧ください。システム全体、シェル、またはローカルディレクトリごとに、任意のJavaバージョン(Oracle、OpenJDK、その他)をいつでも切り替えることができます。

JEnvの使用中にJava_HOMEを管理しやすくするために、 export plugin を追加してこれを行うことができます。

$ jenv enable-plugin export
  You may restart your session to activate jenv export plugin echo export plugin activated

エクスポートプラグインはJava_HOMEが既に設定されている場合は調整しない可能性があるため、JEnvで管理できるようにプロファイルのこの変数をクリアする必要がある場合があります。

jenv exec <command> <parms...>を使用して、1つのコマンドに対してJava_HOMEおよびPATHが正しく設定された単一のコマンドを実行することもできます。これには、別のシェルを開くことも含まれます。


SDKMANを使用したバージョンのインストールと切り替え

SDKMAN は少し異なり、インストールと切り替えの両方を処理します。また、SDKMANは、インストールされたJDKを独自のディレクトリツリーに配置します。これは通常、~/.sdkman/candidates/Javaです。 SDKMANでは、グローバルなデフォルトバージョンと現在のシェルに固有のバージョンを設定できます。

  1. https://sdkman.io/install からSDKMANをインストールします

  2. SDKMANを使用してJava 12をインストールします。

    sdk install Java 12.0.0-open 
    
  3. 12をデフォルトバージョンにします。

    sdk default Java 12.0.0-open
    

    または、セッションの12に切り替えます。

    sdk use Java 12.0.0-open
    

Listコマンドを使用して、インストール可能なバージョンをリストできます。

sdk list Java

JDK 8などの追加バージョンをインストールします。

sdk install Java 8.0.181-Oracle

SDKMANは、以前にインストールされた既存のバージョンで動作できます。独自のバージョンラベルとJDKの場所を指定してローカルインストールを実行するだけです。

sdk install Java my-local-12 /Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home

そしてそれを自由に使用します:

sdk use Java my-local-12

詳細については、 SDKMAN Usage Guide とともに 他のSDK でインストールおよび管理できます。

SDKMANは、バージョンを変更すると、自動的にPATHJava_HOMEを管理します。


Jabbaを使用したバージョンのインストールと切り替え

Jabba は、インストールと切り替えの両方を処理します。また、JabbaはインストールされたJDKを独自のディレクトリツリーに配置します。これは通常~/.jabba/jdkです。

  1. ホームページの指示 に従ってJabbaをインストールします。

  2. 利用可能なJDKのリスト

    jabba ls-remote
    
  3. Java JDK 12をインストールします

    jabba install [email protected]
    
  4. これを使って:

    jabba use [email protected]
    

また、バージョン名のエイリアス、既にインストールされている既存のJDKへのリンク、GraalVM、Adopt JDK、IBM JDKなどの興味深いJDKの組み合わせを見つけることもできます。完全な 使用ガイド もホームページで利用可能です。

バージョンを変更すると、JabbaはPATHJava_HOMEを自動的に管理します。

457
Jayson Minard

サードパーティ製ツールなしで手動でシステムのデフォルトバージョンを切り替える:

この古い回答 で詳述されているように、macOSでは/usr/bin/Javaは、Java_HOMEが指すJavaバージョンを使用するラッパーツール、またはその変数が設定されていない場合/Library/Java/JavaVirtualMachines/の下でJavaインストールを探し、最新バージョンのインストールを使用します。各パッケージの下のContents/Info.plistを見てバージョンを決定します。

この知識で武装することができます:

  • デフォルトとして使用したくないバージョンのInfo.plistの名前を変更して、システムが使用するバージョンを制御します(そのファイルは実際のJavaランタイム自体では使用されません)。
  • $Java_HOMEを設定して、特定のタスクに使用するバージョンを制御します

OpenJDKとMojaveでもこれがまだ当てはまることを確認しました。

新しいシステムでは、Javaバージョンがインストールされていません。

$ Java -version
No Java runtime present, requesting install.

これをキャンセルし、OpenJDK 11および12eaを https://jdk.Java.net でダウンロードします。 OpenJDK11をインストールします。

$ cd /Library/Java/JavaVirtualMachines/
$ Sudo tar xzf ~/Downloads/openjdk-11.0.1_osx-x64_bin.tar.gz

システムJavaは11になりました。

$ Java -version
openjdk version "11.0.1" 2018-10-16
[...]

OpenJDK12をインストールします(現時点では早期アクセス):

$ Sudo tar xzf ~/Downloads/openjdk-12-ea+17_osx-x64_bin.tar.gz 

システムJavaは12になりました。

$ Java -version
openjdk version "12-ea" 2019-03-19
[...]

次に、システムJavaラッパーからOpenJDK 12を「非表示」にします。

$ cd jdk-12.jdk/Contents/
$ Sudo mv Info.plist Info.plist.disabled

システムJavaは11に戻りました:

$ Java -version
openjdk version "11.0.1" 2018-10-16
[...]

Java_HOMEを手動で設定することにより、引き続きバージョン12を時間どおりに使用できます。

$ export Java_HOME=/Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
$ Java -version
openjdk version "12-ea" 2019-03-19
[...]
3
Hugues M.

これが私のやり方です。 

ステップ1: Java 11をインストールする

あなたはここからMac用のJava 11 dmgをダウンロードすることができます: https://www.Oracle.com/technetwork/Java/javase/downloads/jdk11-downloads-5066655.html

ステップ2: Javaのインストール後11.すべてのバージョンのインストールを確認します。端末に次のコマンドを入力してください。

/usr/libexec/Java_home -V

ステップ3: .bash_profileを編集する

Sudo nano ~/.bash_profile

ステップ4: デフォルトとして11.0.1を追加。 (bash_profileファイルに以下の行を追加してください)。

export Java_HOME=$(/usr/libexec/Java_home -v 11.0.1)

任意のバージョンに切り替える

export Java_HOME=$(/usr/libexec/Java_home -v X.X.X)

Bashを終了するにはCtrl + Xを押してください。変更を保存するには 'Y'を押します。

ステップ5: bash_profileをリロードする

source ~/.bash_profile

ステップ6: 現在のJavaのバージョンを確認する

Java -version
1
VK321

別の方法は _ sdkman _ !を使うことです。 https://wimdeblauwe.wordpress.com/2018/09/26/switching-between-jdk-8-and-11-using-sdkman/ を参照してください。

最初にSDKMANをインストールします。 https://sdkman.io/install そして次に...

  1. Oracle JDK 8を次のようにインストールします。sdk install Java 8.0.181-Oracle
  2. OpenJDK 11をsdk install Java 11.0.0-openでインストールしてください。

切り替えるには:

  • sdk use Java 8.0.181-OracleでJDK 8に切り替えます
  • sdk use Java 11.0.0-openでJDK 11に切り替えます

デフォルトを設定するには:

  • デフォルトはsdk default Java 8.0.181-OracleのJDK 8
  • デフォルトはsdk default Java 11.0.0-openのJDK 11
0
Wim Deblauwe