1. ホーム

[解決済み】Mac OSXでJavaのバージョン切り替えを可能にするインストール方法とは?

2022-03-24 10:47:16

質問

Mac OSX に OpenJDK Java をインストールし、新しいリリースなので他の JDK と一緒に動作させたいと思っています。 現在、tar.gzをダウンロードしてパスに入れていますが、これでは維持が大変です。

私が見つけた唯一の自動的なインストールは、Homebrew caskを経由したインストールです。 これも現在のバージョンだけのようです。

brew cask info java

表示する。

<ブロッククオート

java: 13,33:5b8a42f3905b406298b72d750b6919f6

https://openjdk.java.net/

だから、そこからインストールすればいいんだけど、その後は? 新しいバージョンしか使えないのでしょうか?

解決方法は?

注意事項 これらのソリューションは、Java 8からJava 17(LTSバージョン)を含む、さまざまなバージョンのJavaで動作します。 これには、OpenJDK、Oracle、IBM、Azul、Amazon Correto、Graalなどの代替JDKが含まれます。 Java 7、Java 8、Java 9、Java 10、Java 11、Java 12、Java 13、Java 14、Java 15、Java 16、およびJava 17で簡単に作業できます!

JDKの切り替えを管理するだけでなく、インストールを行う方法についても、いくつかのオプションがあります。 インストールはHomebrewで行うことができます。 SDKMAN , アズデフ , ジャバ または手動でインストールします。 切り替えは、以下の方法で行うことができます。 JEnv , SDKMAN , アズデフ , ジャバ を設定するか、手動で JAVA_HOME . これらはすべて、以下で説明します。


TL;DR - 好ましいインストール方法

SDKMANを含め、お好きな方法でJavaをインストールすることができます。 asdf または、Homebrew、tar.gz ファイルを手動でインストールします。 手動インストールの利点は、JDKの場所をMac OSX用に標準化した場所に置くことができることです。

しかし、以下のような簡単なオプションもあります。 SDKMAN アズデフ また、JVMのための他の重要かつ一般的なツールもインストールされます。 これらの2つの主要なオプションは、ここで説明されています。

SDKMANによるインストールとバージョン切り替え

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

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

  2. バージョンIDを確認するために、利用可能なJavaのバージョンを一覧表示します。

    sdk list java
    
    
  3. これらのバージョンのうちの1つ、たとえばJava 17をインストールします。

    sdk install java 17-open 
    
    
  4. Java 17をデフォルトのバージョンにします。

    sdk default java 17-open
    
    

    または、現在の端末セッションの17に切り替えます。

    sdk use java 17-open
    
    

listコマンドでインストール可能なバージョンをリストアップすると、様々なJavaのディストリビューションが表示されます。

sdk list java

そして、AmazonからJDK 11などの追加バージョンをインストールします。

sdk install java 11.0.10.9.1-amzn

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

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

そして、自由に使ってください。

sdk use java my-local-13

SDKMANは自動的に PATHJAVA_HOME を、バージョンを変更する際に使用することができます。 また、注意点として、Javaのバージョンをインストールするのは ~/.sdkman/candidates/java/ .

より詳細な情報は SDKMAN使用ガイド とともに 他のSDKの をインストールし、管理することができます。


"でインストールとバージョン切替。 asdf "

asdf は、ほとんどの言語、フレームワーク、および開発者/デベロッパーツールのインストールと管理をサポートするバージョンマネージャです。言語固有のプラグインもあり、そのひとつが Java用 .

  1. まず、インストールします。 asdf を経由して https://asdf-vm.com/guide/getting-started.html (シェルを正しくセットアップするためにそこを読んでください)、あるいはもっと簡単に。

    brew reinstall asdf
    
    

    ドキュメントを読む を使用する場合は、シェルを正しくセットアップする必要があります。 asdf HomebrewからZSHでこのコマンドを実行すれば、セットアップは完了です。

    echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc
    
    
  2. 次に、Java プラグインをインストールします。 https://github.com/halcyon/asdf-java

    asdf plugin add java
    
    

    ドキュメントを読む をクリックして、シェルを正しくセットアップしてから続けてください。 基本的には、以下の内容をあなたの ~/.zshrc ファイル(他のシェルを使っていないことが前提です。)

    . ~/.asdf/plugins/java/set-java-home.zsh
    
    
  3. Java のバージョンをリストアップするようにしました。

    asdf list-all java
    
    
  4. お好きなフレーバーとバージョンをインストールしてください。

    asdf install java openjdk-17
    
    

    または最新版をインストールしてください。

    asdf install java latest
    
    

その他の重要なコマンドは...

  • インストールされているバージョンの一覧を表示します。

    asdf list java
    
    
  • グローバルなJavaのバージョンを設定します。

    asdf global java openjdk-17
    
    
  • ディレクトリのローカルJavaバージョンを設定します。

    asdf local java openjdk-17
    
    

こんなに簡単なんです アズファクト は、バージョンを変更すると、PATHとJAVA_HOMEを自動的に管理してくれます。 注意点として asdf は、Javaのバージョンを ~/.asdf/installs/java .

の他の言語やプラグインがあります。 asdf リポジトリページから、こちらをご覧ください。 https://github.com/asdf-vm/asdf-plugins


その他の設置方法

Homebrewでインストールする

2018年10月3日以前のHomebrew Caskで利用できるJavaのバージョンは、確かにOracle JVMでした。 しかし、現在は、OpenJDKにアップデートされています。 必ずHomebrewをアップデートしてから、最新版をインストールできるようにしてください。

  1. インストール Homebrew をクリックしてください。 アップデートされていることを確認してください。

     brew update
    
    
  2. カスクタップを追加します。

     brew tap homebrew/cask-versions
    
    

    これらのカスクでは、Javaのバージョンが頻繁に変更されるため、Javaのバージョンが追加された他のタップが存在する可能性があります。

  3. インストール可能なバージョンを探してください。

     brew search java  
    
    

    またはEclipse Temurinバージョンの場合。

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

     brew info java
    
    

    またはTemurinバージョンの場合。

     brew info temurin
    
    
  5. などの特定のバージョンのJDKをインストールします。 java11 , temurin8 , temurin11 または、単に java または temurin は、そのディストリビューションの最新のものです。 例えば

     brew install java
    
     brew install --cask temurin
    
    

そして、これらをインストールすることで /Library/Java/JavaVirtualMachines/ これは、Mac OSX で期待される伝統的な場所です。 インストールプロセスの最後に、JDKをアクティブにするための追加の手順が報告されるかもしれません。

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

もし、あらゆるバージョンのJavaが必要な場合は、ここを見るとよいでしょう。

  1. Mac OSX用OpenJDKのダウンロードはこちらから http://jdk.java.net/ (例 ジャバ17 )

  2. OpenJDK の tar アーカイブを解凍し、できたフォルダ(つまり jdk-17.jdk を使用します。 /Library/Java/JavaVirtualMachines/ フォルダーにインストールする必要があります。 また、実際には好きな場所にインストールすることができます。

  3. セット JAVA_HOME 環境変数に、JDKをアーカイブ解除した場所を指定してください。

詳細については、回答をご覧ください。 マニュアルインストールに特化 . また、複数の手動インストールを管理する方法については、以下の「手動でバージョンを切り替える」セクションを参照してください。

その他のインストール方法

OpenJDKの他のフレーバーもあります。

アズールシステムズ Java Zulu 認証済みのOpenJDKのビルドは、以下の方法でインストールできます。 サイト内の説明 .

Zulu®は、Java SE標準に完全に準拠したOpenJDKの認定ビルドです。Zuluは100%オープンソースであり、自由にダウンロードできます。これにより、Java開発者、システム管理者、エンドユーザーは、展開の柔軟性とアップグレードのタイミングをコントロールしながら、オープンソースJavaの利点をフルに享受することができます。

アマゾンコレット OpenJDKのビルドには、Java 8、Java 11、Java 15、Java 16、およびJava 17用の使いやすいインストールパッケージが用意されています。 インストール先は、標準の /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仮想マシン(10)。

17 (x86_64) "Homebrew" - "OpenJDK 17" /usr/local/Cellar/openjdk/17/libexec/openjdk.jdk/Contents/Home

11, x86_64: "Java SE 11" /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home

1.8.301.09 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home /usr/local/Cellar/openjdk/17/libexec/openjdk.jdk/Contents/Home

また、特定のJavaバージョンの場所だけを報告することもできます。 -v . 例えば、Java 17の場合。

/usr/libexec/java_home -v 17

/usr/local/Cellar/openjdk/17/libexec/openjdk.jdk/Contents/Home

インストールされているJDKの場所を知っておくことは、JEnvのようなツールを使用したり、SDKMANに手動でローカルインストールを追加したり、JabbaでシステムJDKをリンクしたりする場合にも便利です --。

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

  • SDKMANのインストール先 ~/.sdkman/candidates/java/
  • アズデフ にインストールします。 ~/.asdf/installs/java
  • Jabbaのインストール先 ~/.jabba/jdk

バージョン切り替え

を使用している場合 SDKMAN または アズデフ という方は、もう読まないで結構です。 そうでない場合は、既存のVMインストールを切り替えるためのオプションをいくつか紹介します。

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

Java の実行ファイルはラッパーで、JDK の設定は JAVA_HOME そのため、どのJDKを使用するかを変更することができます。

例えば、JDK16をインストールまたはアンターした場合は /Library/Java/JavaVirtualMachines/jdk-16.jdk もし、それが最も高いバージョン番号であれば、すでにデフォルトになっているはずですが、そうでなければ、単に設定することができます。

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-16.jdk/Contents/Home

これで、パスにあるどんなJava実行ファイルも、これを見て、正しいJDKを使うようになります。

A JDKを変更する簡単な方法 の中に関数を作成することです。 ~/.bashrc または ~/.zshrc ファイルを作成します。

jdk() {
    version=$1
    export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
    java -version
}

で、単純にJDKを変更する。

jdk 1.8
jdk 9
jdk 11
jdk 13


JEnvによるバージョン切り替え

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

  1. JEnvをまだインストールしていない場合は、このサイトに説明があります。 http://www.jenv.be/ を手動でインストールするか、Homebrewを使用してください。

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

    jenv add /usr/local/Cellar/openjdk/17/libexec/openjdk.jdk/Contents/Home
    
    
  3. このコマンドを使用して、グローバルバージョンを設定します。

    jenv global 17
    
    

また、他の既存のバージョンを追加するには jenv add を同様の方法で作成し、利用可能なものをリストアップします。 例えば、Java 8のように。

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

をご覧ください。 JEnv ドキュメント を追加しました。 システム全体、シェル、ローカルディレクトリのいずれでも、いつでもJavaのバージョン(Oracle、OpenJDK、その他)を切り替えることができるようになりました。

を管理するために JAVA_HOME JEnv を使用しているときに エクスポートプラグイン を使うと、このようなことができます。

$ 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...> を使用して単一のコマンドを実行します。 JAVA_HOMEPATH は、その1つのコマンドに対して正しく設定され、別のシェルを開くこともできます。


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 を、バージョンを変えても使えるようにしました。