Help us understand the problem. What is going on with this article?

MacのBrewで複数バージョンのJavaを利用する + jEnv

Homebrewのインストール

homebrew-cask-versionsの導入

$ brew tap homebrew/cask-versions

Java 15のインストール

  • インストールされるJavaは Java SE 15 になる。
$ brew cask install oracle-jdk

Java 14のインストール

  • インストールされるJavaは(現時点では) OpenJDK 14 になる。
$ brew install java

Java 11のインストール

  • インストールされるJavaは OpenJDK 11 になる。
$ brew install java11

Java 8のインストール

AdoptOpenJDK 8のインストール

$ brew cask install adoptopenjdk8

Amazon Corretto 8のインストール

$ brew cask install corretto8

Zulu 8のインストール

$ brew cask install zulu8

インストール済みJDK(JAVA_HOME)の確認

  • /usr/libexec/java_homeコマンド
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (7):
    15, x86_64: "Java SE 15"    /Library/Java/JavaVirtualMachines/jdk-15.jdk/Contents/Home
    15, x86_64: "AdoptOpenJDK 15"   /Library/Java/JavaVirtualMachines/adoptopenjdk-15.jdk/Contents/Home
    14.0.1, x86_64: "OpenJDK 14.0.1"    /Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home
    11.0.8, x86_64: "OpenJDK 11.0.8"    /Library/Java/JavaVirtualMachines/openjdk-11.jdk/Contents/Home
    11.0.8, x86_64: "Amazon Corretto 11"    /Library/Java/JavaVirtualMachines/amazon-corretto-11.jdk/Contents/Home
    1.8.0_265, x86_64:  "Amazon Corretto 8" /Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home
    1.8.0_265, x86_64:  "AdoptOpenJDK 8"    /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

/Library/Java/JavaVirtualMachines/jdk-15.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 Java versions in the "JVMVersion" form 1.X(+ or *).
    [-a/--arch      <architecture>]  Filter JVMs matching architecture (i386, x86_64, etc).
    [-d/--datamodel <datamodel>]     Filter JVMs capable of -d32 or -d64
    [-t/--task      <task>]          Use the JVM list for a specific task (Applets, WebStart, BundledApp, JNI, or CommandLine)
    [-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.
    [-R/--request]                   Request installation of a Java Runtime if not installed.
    [-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の切り替え

Java SE 15

$ export JAVA_HOME=`/usr/libexec/java_home -v "15"`
$ PATH=${JAVA_HOME}/bin:${PATH}

Java SE 14

$ export JAVA_HOME=`/usr/libexec/java_home -v "14"`
$ 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のインストール

  • 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
trech
Salesforce社が提供するSFA(営業支援)・CRMをもとに、企業の基幹業務・サービス業務を中心としたWEBシステムやスマートフォン等のアプリケーションを受託開発し、その運営保守を行う。
https://trech.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした