[解決済み】Mac OSXでJavaのバージョン切り替えを可能にするインストール方法とは?
質問
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では、グローバルなデフォルトのバージョンと、現在のシェルに固有のバージョンを設定することができます。
-
SDKMANは以下からインストールします。 https://sdkman.io/install
-
バージョンIDを確認するために、利用可能なJavaのバージョンを一覧表示します。
sdk list java
-
これらのバージョンのうちの1つ、たとえばJava 17をインストールします。
sdk install java 17-open
-
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は自動的に
PATH
と
JAVA_HOME
を、バージョンを変更する際に使用することができます。 また、注意点として、Javaのバージョンをインストールするのは
~/.sdkman/candidates/java/
.
より詳細な情報は SDKMAN使用ガイド とともに 他のSDKの をインストールし、管理することができます。
"でインストールとバージョン切替。 asdf "
asdf は、ほとんどの言語、フレームワーク、および開発者/デベロッパーツールのインストールと管理をサポートするバージョンマネージャです。言語固有のプラグインもあり、そのひとつが Java用 .
-
まず、インストールします。 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
-
次に、Java プラグインをインストールします。 https://github.com/halcyon/asdf-java
asdf plugin add java
と ドキュメントを読む をクリックして、シェルを正しくセットアップしてから続けてください。 基本的には、以下の内容をあなたの
~/.zshrc
ファイル(他のシェルを使っていないことが前提です。). ~/.asdf/plugins/java/set-java-home.zsh
-
Java のバージョンをリストアップするようにしました。
asdf list-all java
-
お好きなフレーバーとバージョンをインストールしてください。
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をアップデートしてから、最新版をインストールできるようにしてください。
-
インストール Homebrew をクリックしてください。 アップデートされていることを確認してください。
brew update
-
カスクタップを追加します。
brew tap homebrew/cask-versions
これらのカスクでは、Javaのバージョンが頻繁に変更されるため、Javaのバージョンが追加された他のタップが存在する可能性があります。
-
インストール可能なバージョンを探してください。
brew search java
またはEclipse Temurinバージョンの場合。
brew search temurin
-
インストールされるバージョンの詳細を確認します。
brew info java
またはTemurinバージョンの場合。
brew info temurin
-
などの特定のバージョンのJDKをインストールします。
java11
,temurin8
,temurin11
または、単にjava
またはtemurin
は、そのディストリビューションの最新のものです。 例えばbrew install java brew install --cask temurin
そして、これらをインストールすることで
/Library/Java/JavaVirtualMachines/
これは、Mac OSX で期待される伝統的な場所です。 インストールプロセスの最後に、JDKをアクティブにするための追加の手順が報告されるかもしれません。
OpenJDKのダウンロードページから手動でインストールします。
もし、あらゆるバージョンのJavaが必要な場合は、ここを見るとよいでしょう。
-
Mac OSX用OpenJDKのダウンロードはこちらから http://jdk.java.net/ (例 ジャバ17 )
-
OpenJDK の tar アーカイブを解凍し、できたフォルダ(つまり
jdk-17.jdk
を使用します。/Library/Java/JavaVirtualMachines/
フォルダーにインストールする必要があります。 また、実際には好きな場所にインストールすることができます。 -
セット
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 のグローバルバージョン、現在のシェル用のバージョン、およびディレクトリごとのローカルバージョンを設定することができ、プロジェクトによっては他のものと異なるバージョンを必要とする場合に便利です。
-
JEnvをまだインストールしていない場合は、このサイトに説明があります。 http://www.jenv.be/ を手動でインストールするか、Homebrewを使用してください。
-
JEnv に任意の Java バージョンを追加する ( 他の場所に配置した場合は、ディレクトリを調整します。 ):
jenv add /usr/local/Cellar/openjdk/17/libexec/openjdk.jdk/Contents/Home
-
このコマンドを使用して、グローバルバージョンを設定します。
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_HOME
と
PATH
は、その1つのコマンドに対して正しく設定され、別のシェルを開くこともできます。
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
を、バージョンを変えても使えるようにしました。
関連
-
[解決済み] enumのordinalを使用するのは良い習慣ですか?
-
[解決済み] Java- <T extends Comparable<T>>の意味?
-
[解決済み] アニメーションGIFの表示
-
[解決済み] 文字列の巻き方
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Javaで配列に特定の値が含まれているかどうかを判断するにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JVMフラグCMSClassUnloadingEnabledは、実際に何をするのですか?
-
[解決済み] JavaでFileFilterを作るには?
-
[解決済み] パラメータ[変数]の不正な修飾子;finalのみが許可される[closed]。
-
[解決済み] 環境変数JAVA_OPTSの使い方を教えてください。
-
[解決済み] 警告: コンテキスト初期化中に例外が発生 - 更新の試みはキャンセルされました。
-
[解決済み] 親から継承したメソッドの可視性を下げることができない [重複]。
-
[解決済み] 午前0時からの時間を秒単位で取得する方法
-
[解決済み] 文字列が一意な文字であるかどうかを判定する
-
[解決済み] Javaでdoubleをfloatに変換する
-
[解決済み] Mac OS Xと複数のJavaバージョン