Homebrewのインストール
- Homebrewのサイトを参照
homebrew-cask-versions
の導入
-
https://github.com/Homebrew/homebrew-cask-versions
- 最新バージョン以外のインストールに必要。
$ brew tap homebrew/cask-versions
Java 18のインストール
- インストールされるJavaは(現時点では) OpenJDK 18 になる。
$ brew install openjdk
Java 17のインストール
$ brew install openjdk@17
Java 11のインストール
$ brew install openjdk@11
Java 8のインストール
-
ライセンスの関係で利用不能になっているため、他のディストリビューションで代用する。
- ディストリビューション
- JDKによって内包するSDKが異なるので注意
インストール済みJDK(JAVA_HOME
)の確認
-
/usr/libexec/java_home
コマンド
$ /usr/libexec/java_home -V Matching Java Virtual Machines (13):
17.0.1 (x86_64) "Oracle Corporation" - "Java SE 17.0.1" /Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
17.0.1 (x86_64) "GraalVM Community" - "GraalVM CE 21.3.0" /Library/Java/JavaVirtualMachines/graalvm-ce-java17-21.3.0/Contents/Home
17.0.1 (x86_64) "Homebrew" - "OpenJDK 17.0.1" /usr/local/Cellar/openjdk/17.0.1_1/libexec/openjdk.jdk/Contents/Home
17.0.1 (x86_64) "Amazon.com Inc." - "Amazon Corretto 17" /Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home
17.0.1 (x86_64) "Microsoft Build of OpenJDK" - "Microsoft Build of OpenJDK 17" /Library/Java/JavaVirtualMachines/microsoft-17.jdk/Contents/Home
17.0.1 (x86_64) "Eclipse Temurin" - "Eclipse Temurin 17" /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
11.0.13 (x86_64) "Amazon.com Inc." - "Amazon Corretto 11" /Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home
11.0.13 (x86_64) "GraalVM Community" - "GraalVM CE 21.3.0" /Library/Java/JavaVirtualMachines/graalvm-ce-java11-21.3.0/Contents/Home
11.0.13 (x86_64) "Eclipse Temurin" - "Eclipse Temurin 11" /Library/Java/JavaVirtualMachines/temurin-11.jdk/Contents/Home
11.0.13 (x86_64) "Microsoft Build of OpenJDK" - "Microsoft Build of OpenJDK 11" /Library/Java/JavaVirtualMachines/microsoft-11.jdk/Contents/Home
11.0.12 (x86_64) "Homebrew" - "OpenJDK 11.0.12" /usr/local/Cellar/openjdk@11/11.0.12/libexec/openjdk.jdk/Contents/Home
1.8.0_312 (x86_64) "Amazon" - "Amazon Corretto 8" /Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home
1.8.0_312 (x86_64) "Eclipse Temurin" - "Eclipse Temurin 8" /Library/Java/JavaVirtualMachines/temurin-8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-17.0.1.jdk/Contents/Home
$ /usr/libexec/java_home --help Usage: java_home [options...]
Returns the path to a Java home directory from the current user's settings.
Options:
[-v/--version <version>] Filter versions (as if JAVA_VERSION had been set in the environment).
[-a/--arch <architecture>] Filter architecture (as if JAVA_ARCH had been set in the environment).
[-F/--failfast] Fail when filters return no JVMs, do not continue with default.
[ --exec <command> ...] Execute the $JAVA_HOME/bin/<command> with the remaining arguments.
[-X/--xml] Print full JVM list and additional data as XML plist.
[-V/--verbose] Print full JVM list with architectures.
[-h/--help] This usage information.
JDKの切り替え
-
OSXでJavaのバージョンを切り替える
- 環境変数
JAVA_HOME
をjava_home
コマンドを使って設定する。- 利用しているシェルに応じて
.bashrc
,.zshrc
ファイルに追記する。
- 利用しているシェルに応じて
- 環境変数
Java SE 17
$ export JAVA_HOME=`/usr/libexec/java_home -v "17"`
$ PATH=${JAVA_HOME}/bin:${PATH}
Java SE 11
$ export JAVA_HOME=`/usr/libexec/java_home -v "11"`
$ PATH=${JAVA_HOME}/bin:${PATH}
Java SE 8
$ export JAVA_HOME=`/usr/libexec/java_home -v "1.8"`
$ PATH=${JAVA_HOME}/bin:${PATH}
jEnvの利用
- jEnvを導入するこで、Javaのバージョンを切り替えが簡単になる。
jEnvのインストール
- Homebrewでインストール
$ brew install jenv
-
PATH
を設定- 使用するシェルにより異なるので注意
# Shell: bash
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(jenv init -)"' >> ~/.bash_profile
# Shell: zsh
$ echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
$ echo 'eval "$(jenv init -)"' >> ~/.zshrc
- ディレクトリを作成
$ cd ~
$ mkdir ~/.jenv/versions
jEnvにJDKを追加
- JDKはHomebrew Caskでインストールする。
- インストールしたJDKをjEnvに追加する。
Java8の追加
$ jenv add `/usr/libexec/java_home -v "1.8"`
jEnvに追加されているJDKの一覧
- 先頭に
*
が表示されているJDKが有効化されている。
$ jenv versions
* system (set by /Users/[ユーザ名]/.jenv/version)
1.8
1.8.0.222
openjdk64-1.8.0.222
Javaの切り替え
-
jenv versions
で出力される任意のバージョンへ切り替えられる。
グローバル
$ jenv global 1.8.0.222
$ jenv versions
system
1.8
* 1.8.0.222 (set by /Users/[ユーザ名]/.jenv/version)
openjdk64-1.8.0.222
$ java -version
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_222-b10)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.222-b10, mixed mode)
ローカル
- 特定のディレクトリのみに適用する。
- コマンドを実行したディレクトリに
.java-version
ファイルが作成され、指定されたバージョンのJDKが利用可能となる。
- コマンドを実行したディレクトリに
$ jenv local 11.0
$ jenv versions ✘
system
1.8
1.8.0.222
* 11.0 (set by /Users/[jenv localを実行したディレクトリ]/.java-version)
11.0.2
openjdk64-1.8.0.222
openjdk64-11.0.2
$ java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment 18.9 (build 11.0.2+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.2+9, mixed mode)
$ cat .java-version
11.0
環境変数JAVA_HOME
の自動設定
- 自動的に
JAVA_HOME
を設定するにはenable-plugin export
を実行する。- 自動設定を解除するには
disable-plugin export
を実行する。
- 自動設定を解除するには
$ jenv enable-plugin export