TL;DR
Ubuntu16.04 に Java をインストールして jenv で管理する。
jenv ではなく、デフォルトの alternatives を使うこともできる(らしい)。やっていません。
手順
jenv のインストール
jenv は anyenv でインストールした。 anyenv のインストールは省略。
$ anyenv install jenv $ exec $SHELL -l # jenv へのパスを環境変数PATHに反映
java のインストール
java 8 と 9 をインストールした。 apt-get
で openjdk-8-jdk
と openjdk-9-jdk
を入れておいて、後から jenv add
して管理する。
$ sudo apt-get install openjdk-8-jdk openjdk-9-jdk
なんか update-alternatives: /usr/bin/jlink (jlink) を提供するために自動モードで /usr/lib/jvm/java-9-openjdk-amd64/bin/jlink を使います
とかって警告がずらっと出たりするけど、これは多分システム側で *env 的なことをする alternatives なるソフトウェアがログを出しているだけっぽいので、やってくれてるなって感じで見守る。使いたい人はそちらを使えば良さそう、僕はバイナリをひとつひとつやるのは大変そうかなって思ったので jenv でやります。
jenv に登録
インストールできたら、 jenv に管理する java のパスを追加する。
それぞれのバージョンがどこにインストールされているのかは、 which java
したり、シンボリックリンクを追ったりすれば多分たどり着ける。今回は alternatives が頑張ってくれているので、巡り巡って /etc/alternatives
にシンボリックリンクがあり、そこから実ファイルへ参照していた。
$ which java /usr/bin/java $ ls -l /usr/bin/java lrwxrwxrwx 1 root root 22 3月 11 22:01 /usr/bin/java -> /etc/alternatives/java $ ls -l /etc/alternatives/java lrwxrwxrwx 1 root root 42 3月 11 22:01 /etc/alternatives/java -> /usr/lib/jvm/java-9-openjdk-amd64/bin/java # ゴール $ ls /usr/lib/jvm # (略) java-9-openjdk-amd64 # java9 の実ファイルの場所 java-8-openjdk-amd64 # java8 の実ファイルの場所
見つけたパスを追加していく。でき次第設定して完了。
$ jenv add /usr/lib/jvm/java-8-openjdk-amd64 $ jenv add /usr/lib/jvm/java-9-openjdk-amd64 $ jenv versions # 確認 * system (set by /home/ほげ/.anyenv/envs/jenv/version) 1.8 1.8.0.151 9-internal openjdk64-1.8.0.151 openjdk64-9-internal $ jenv global 1.8 # java 8 に設定 $ java -version # 確認 openjdk version "1.8.0_151" OpenJDK Runtime Environment (build 1.8.0_151-8u151-b12-0ubuntu0.16.04.2-b12) OpenJDK 64-Bit Server VM (build 25.151-b12, mixed mode) $ javac -version # 確認2 javac 1.8.0_151
一括で切り替えができて便利。 java 8 と 9 を切り替えまくるときがあるかどうかは不明。