投稿日:
2019年6月30日
最終更新日:
【オラクルの呪い】「jenv」を使ってJavaのバージョンをコマンド一つで切り替えよう【Homebrew/anyenv】
YouTubeも見てね♪
[ノースフェイス] THE NORTH FACE メンズ アウター マウンテンライトジャケット
防水暴風で耐久性抜群なので旅行で大活躍です!
レッドブル エナジードリンク 250ml×24本
翼を授けよう!
モンスターエナジー 355ml×24本 [エナジードリンク]
脳を活性化させるにはこれ!
ドラゴンクエスト メタリックモンスターズギャラリー メタルキング
みんな大好き経験値の塊をデスクに常備しておこう!
Bauhutte ( バウヒュッテ ) 昇降式 L字デスク ブラック BHD-670H-BK
メインデスクの横に置くのにぴったりなおしゃれな可動式ラック!
BANDAI SPIRITS ULTIMAGEAR 遊戯王 千年パズル 1/1スケール
もう一人の僕を呼び覚ませ!!
サンディスク microSD 128GB
スマホからSwitchまで使える大容量MicroSDカード!
目次
JavaのバージョンはOracleのせいで闇が深い
皆さんはJava言語を使って開発をしたことはありますか?
RubyやPHPなどの他の言語と同様に、バージョンの概念を持っていますが、Oracleが絡んでいるのでJavaのバージョンについてはちょっと一癖あります。
しかし、そんなめんどくさいJavaにも他の言語と同様に「jenv」と呼ばれる便利なバージョン管理ツールが出ています。
今回はそちらのインストール方法と使い方をご紹介していこうと思います。
手順
前提
今回は、以前ご紹介したanyenv経由でjenvをインストールしようと思っていますので、まずはそちらを見て頂ければなと思います。
jenvのインストール
ではまずはanyenv経由でjenvをインストールしましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
/var/folders/5k/s10ppj590d534615rmtkm9cm0000gn/T/jenv.20190619153804.29063 ~
Cloning https://github.com/jenv/jenv.git master to jenv...
Cloning into 'jenv'...
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (15/15), done.
remote: Total 1088 (delta 2), reused 5 (delta 0), pack-reused 1073
Receiving objects: 100% (1088/1088), 414.45 KiB | 424.00 KiB/s, done.
Resolving deltas: 100% (478/478), done.
~
Install jenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
|
環境変数の設定
次に環境変数を設定します。
1
2
3
4
5
6
7
8
9
10
|
...
(略)
...
#jenv
set -x JENV_ROOT $ANYENV_ROOT/envs/jenv/
set -x PATH $JENV_ROOT/bin $PATH
set -x PATH $JENV_ROOT/shims $PATH
...
(略)
...
|
確認
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
jenv 0.5.2-4-gd8ffd5b
Usage: jenv <command> [<args>]
Some useful jenv commands are:
commands List all available jenv commands
local Set or show the local application-specific Java version
global Set or show the global Java version
shell Set or show the shell-specific Java version
rehash Rehash jenv shims (run this after installing executables)
version Show the current Java version and its origin
versions List all Java versions available to jenv
which Display the full path to an executable
whence List all Java versions that contain the given executable
add Add JDK into jenv. A alias name will be generated by parsing "java -version"
See `jenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/hikage/jenv#readme
|
brew tap caskroom/versionsの設定
今回はHomebrewで複数のJavaを管理したいので、caskroom/versionsを導入します。
1
2
3
4
5
6
7
8
9
|
==> Tapping caskroom/versions
Cloning into '/usr/local/Homebrew/Library/Taps/caskroom/homebrew-versions'...
remote: Enumerating objects: 202, done.
remote: Counting objects: 100% (202/202), done.
remote: Compressing objects: 100% (198/198), done.
remote: Total 202 (delta 10), reused 32 (delta 1), pack-reused 0
Receiving objects: 100% (202/202), 86.17 KiB | 418.00 KiB/s, done.
Resolving deltas: 100% (10/10), done.
Tapped 173 casks (220 files, 329.7KB).
|
JDKのダウンロード
次はJDKをダウンロードしましょう。今回はJava8とJava11を用意します。
Java8
Java8はライセンスの関係で2019年6月19日時点でインストール不可能なので、後述のいずれかで代用する必要があります。
ちなみに、後述の作業で分かるのですが今回インストールした時点ではいずれも中身は同じopenjdk64-1.8.0.212
のようでした。
AdoptOpenJDK 8
1
2
3
4
5
6
7
8
9
10
11
12
13
|
==> Satisfying dependencies
==> Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u212-b03/OpenJDK8U-jdk_x64_mac_hotspot_8u212b03.pkg
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/140418865/07e4b900-61d1-11e9-96f2-868c40733c49?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSV
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'adoptopenjdk8'.
==> Installing Cask adoptopenjdk8
==> Running installer for adoptopenjdk8; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
Password:
installer: Package name is AdoptOpenJDK
installer: Installing at base path /
installer: The install was successful.
🍺 adoptopenjdk8 was successfully installed!
|
Corretto 8
1
2
3
4
5
6
7
8
9
10
11
|
==> Satisfying dependencies
==> Downloading https://d3pxv6yz143wms.cloudfront.net/8.212.04.2/amazon-corretto-8.212.04.2-macosx-x64.pkg
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'corretto8'.
==> Installing Cask corretto8
==> Running installer for corretto8; your password may be necessary.
==> Package installers may write to any location; options such as --appdir are ignored.
installer: Package name is Amazon Corretto 8
installer: Installing at base path /
installer: The install was successful.
🍺 corretto8 was successfully installed!
|
Java 11
1
2
3
4
5
6
7
8
|
==> Satisfying dependencies
==> Downloading https://download.oracle.com/java/GA/jdk11/9/GPL/openjdk-11.0.2_osx-x64_bin.tar.gz
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'java11'.
==> Installing Cask java11
==> Moving Generic Artifact 'jdk-11.0.2.jdk' to '/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk'.
Password:
🍺 java11 was successfully installed!
|
確認
1
2
3
4
|
Matching Java Virtual Machines (3):
11.0.2, x86_64: "OpenJDK 11.0.2" /Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home
1.8.0_212, x86_64: "Amazon Corretto 8" /Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home
1.8.0_212, x86_64: "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
|
jenvの管理対象に追加
インストールしたJDKをjenvの管理対象として追加していきましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
jenv add /Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home
openjdk64-11.0.2 added
11.0.2 added
11.0 added
jenv add /Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home
openjdk64-1.8.0.212 added
1.8.0.212 added
1.8 added
jenv add /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
openjdk64-1.8.0.212 already present, skip installation
1.8.0.212 already present, skip installation
1.8 already present, skip installation
# 内部的に同じopenjdkを使っているらしいので、スキップされた
|
確認
1
2
3
4
5
6
7
|
* system
1.8 (set by /Users/blogenist/.anyenv/envs/jenv/version)
1.8.0.212
11.0
11.0.2
openjdk64-1.8.0.212
openjdk64-11.0.2
|
バージョンの変更
グローバルの場合
1 |
jenv global 1.8
|
確認
1
2
3
|
openjdk version "1.8.0_212"
OpenJDK Runtime Environment Corretto-8.212.04.2 (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM Corretto-8.212.04.2 (build 25.212-b04, mixed mode)
|
ローカルの場合
1 |
jenv local 11.0
|
カレントディレクトリに以下のlocal用の設定ファイルが生成されます。
1 |
11.0 |
確認
1
2
3
|
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)
|
終わりに
以上のように簡単にJavaのバージョンも切り替える事が可能になりました。
Javaのバージョン切り替えは環境変数を都度変えたりする必要があったりととてもめんどくさかったので、jenvを使って幸せになってみてください♪