OpenJDK JavaをMac OSXにインストールし、それが他のJDKと一緒に動作するようにしたいのですが、それは新しいリリースです。現在、tar.gzをダウンロードして自分のパスに配置しましたが、それを維持するのは困難です。
私が見つけた他の唯一のインストールは、Homebrew caskによるインストールです。それも現在のバージョンだけのように見えます:
brew cask info Java
示しています:
ジャワ:12,33
https://jdk.Java.net/
だから私はそこからインストールすることができますが、その後何?私は新しいバージョンだけで立ち往生していますか?
更新:2019年3月19日現在、自作キャスクはOpenJDK 12を指しています
注:これらのソリューションは、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、 SDKMAN 、 Jabba 、または手動インストールによりインストールできます。切り替えは、 JEnv 、 SDKMAN 、 Jabba 、またはJava_HOME
を設定して手動で行うことができます。これらすべてを以下に説明します。
最初に、Homebrew、SDKMAN、またはtar.gzファイルの手動インストールなど、お好みの方法でJavaをインストールします。手動インストールの利点は、JDKの場所をMac OSXの標準化された場所に配置できることです。
これは、インストールとバージョンの切り替えの両方を処理するという点で単純なモデルですが、JDKを非標準のディレクトリにインストールするという警告があります。
<以下の「SDKMANを使用したバージョンのインストールと切り替え」を参照>
これは、インストールとバージョン切り替えの両方が同じツールで処理されるという単純なモデルでもあります。インストールは、非標準のディレクトリに対して行われます。
<以下の「Jabbaを使用したバージョンのインストールと切り替え」を参照>
http://jdk.Java.net/ からMac OSX用OpenJDKをダウンロードします
OpenJDK tarのアーカイブを解除し、作成されたフォルダー(つまりjdk-12.jdk
)を/Library/Java/JavaVirtualMachines/
フォルダーに配置します。これはJDKインストールの標準および予想される場所であるためです。また、実際には任意の場所にインストールできます。
2018年10月3日より前のHomebrew Caskで利用可能なJavaのバージョンは、実際にはOracle JVMでした。ただし、現在はOpenJDKに更新されています。必ずHomebrewを更新すると、インストール可能な最新バージョンが表示されます。
Homebrewをインストール まだインストールしていない場合。更新されていることを確認してください。
brew update
樽のタップをまだ追加していない場合(または手順3で古いJavaバージョンが表示されていない場合):
brew tap homebrew/cask-versions
AdoptOpenJDK バージョンの場合、そのタップを追加します。
brew tap adoptopenjdk/openjdk
これらの樽はJavaバージョンを頻繁に変更します。また、追加のJavaバージョンで他のタップがあるかもしれません。
インストール可能なバージョンを探します:
brew search Java
またはAdoptOpenJDKバージョンの場合:
brew search jdk
インストールされるバージョンの詳細を確認します。
brew cask info Java
またはAdoptOpenJDKバージョンの場合:
brew cask info adoptopenjdk
Java11
、adoptopenjdk8
、または単に現在の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アプリケーションを開発および実行できます。
以前にインストールされた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/candidates/Java/
にインストールされます~/.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 は、Java JDKがマシン上にすでに存在し、任意の場所に存在できることを想定しています。通常、インストールされているJava JDKは/Library/Java/JavaVirtualMachines/
にあります。 JEnvでは、Javaのグローバルバージョン、現在のシェル用、およびプロジェクトごとに異なるバージョンが必要な場合に便利なディレクトリごとのローカルバージョンを設定できます。
まだインストールしていない場合はJEnvをインストールしてください。手動インストールまたはHomebrewを使用する場合は、サイトの指示 http://www.jenv.be/ を参照してください。
JavaバージョンをJEnvに追加します(これを他の場所に配置した場合はディレクトリを調整します):
jenv add /Library/Java/JavaVirtualMachines/jdk-12.jdk/Contents/Home
次のコマンドを使用してグローバルバージョンを設定します。
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は、インストールされたJDKを独自のディレクトリツリーに配置します。これは通常、~/.sdkman/candidates/Java
です。 SDKMANでは、グローバルなデフォルトバージョンと現在のシェルに固有のバージョンを設定できます。
https://sdkman.io/install からSDKMANをインストールします
SDKMANを使用してJava 12をインストールします。
sdk install Java 12.0.0-open
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は、バージョンを変更すると、自動的にPATH
とJava_HOME
を管理します。
Jabba は、インストールと切り替えの両方を処理します。また、JabbaはインストールされたJDKを独自のディレクトリツリーに配置します。これは通常~/.jabba/jdk
です。
ホームページの指示 に従ってJabbaをインストールします。
利用可能なJDKのリスト
jabba ls-remote
Java JDK 12をインストールします
jabba install [email protected]
これを使って:
jabba use [email protected]
また、バージョン名のエイリアス、既にインストールされている既存のJDKへのリンク、GraalVM、Adopt JDK、IBM JDKなどの興味深いJDKの組み合わせを見つけることもできます。完全な 使用ガイド もホームページで利用可能です。
バージョンを変更すると、JabbaはPATH
とJava_HOME
を自動的に管理します。
サードパーティ製ツールなしで手動でシステムのデフォルトバージョンを切り替える:
この古い回答 で詳述されているように、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
[...]
これが私のやり方です。
ステップ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
別の方法は _ sdkman _ !を使うことです。 https://wimdeblauwe.wordpress.com/2018/09/26/switching-between-jdk-8-and-11-using-sdkman/ を参照してください。
最初にSDKMANをインストールします。 https://sdkman.io/install そして次に...
sdk install Java 8.0.181-Oracle
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 8sdk default Java 11.0.0-open
のJDK 11