Linuxに好きなバージョンのJavaとGradleを手動でインストールする
背景
Java、はじめました。
いっちょJavaでもやるかと調べて環境構築したら、snap
のおかげですんなりいきました。
しめしめと思いつつgradle build
しようとしたところ「JDKのバージョンとGradleのバージョンが対応していないから無理です」と仕事を拒否されました。
「しゃーない、アップデートしてやんよ」と思いましたが、apt
やsnap
にあるJDKやGradleはかなり古いみたいで、絶妙にバージョンが噛み合ってくれません。
最新バージョンのモダンでスカしたイケイケJavaでないと脳内仮想JSに「Java 8が許されるのは〜w」と煽られて発狂しそうなので、手動で好きなバージョンをインストールしました。
環境
- Linux Mint 20.3 Una (based on Ubuntu 20.04 Focal Fossa)
おおまかな流れはどのディストロでも変わらないはず。
JDK
JDKいっぱいありすぎ問題
「よーし、(お父さん|お母さん)Javaはじめちゃうぞー」と張り切っているところ申し訳ありません。
JavaのコンパイラなどがセットになったJava Development Kit (JDK)は1つではないんです。
- Oracle JDK
- OpenJDK
- Oracle OpenJDK
- ...etc.
わけがわからねーと思うが(ry
調べたところ、どうも「商用版の他にOSS版も用意して、パッチを取り込む」という最近(?)よくあるやつのようです。
OSS版はOracle自身を含め各社がビルドしているため、いっぱいあるように見えるみたい。
結論としては「どれでもいいけどOracle JDKは個人利用など一部を除いて有償だから気になるならOpenJDKを使え」ということを覚えておけばOKです。
JDKをダウンロードする
各JDKによってことなりますが、tar.gz
やzip
などが各プラットフォームごとにまとまっていますのでそれをダウンロードします。
Oracle JDK
商用のやつ。
以前のバージョンはJava Archiveというリンクから辿れますが、ダウンロードするにはoracle.comのアカウント登録が必要なようです。
Open JDK
OSS版のやつ。Oracleがビルドしているものが無難だと思いますので、その情報です。
最新のバージョンはここから入手しましょう。
以前のバージョンはこっち:
/usr/lib/jvm
に置く
解凍してタイトル通りです。
.zip
なり.tar.gz
なりを解凍して/usr/lib/jvm
にコピーしましょう。
なぜ/usr/lib/jvm
なのか。
それはわかりません(え)。
apt
でインストールしたやつがここに入ってたような気がする……
なんにせよ、こんな感じになるはずです。
/usr/lib/jvm
|- java-11-openjdk-amd64
|- openjdk-18.0.0.1.1_linux-x64
|- jdk-16
default-java
というリンクを張る
バージョン名そのままのフォルダでもいいんですが、いろいろと面倒になることが予想されるので、default-java
というリンクを張ることにします。
sudo ln -s /usr/lib/jvm/jdk-17 /usr/lib/jvm/default-java
環境変数を設定する
.bash_profile
なりなんなり好きなところで以下の環境変数を設定します。
-
JAVA_HOME
にJavaのインストールディレクトリ(default-java
)を設定 -
PATH
に$JAVA_HOME/bin
を追加 - おまけで
_JAVA_OPTIONS
(アンダースコア必須)に-Dfile.encoding=UTF-8
を設定
つまりこういうことです。
export JAVA_HOME='/usr/lib/jvm/default-java'
export _JAVA_OPTIONS='-Dfile.encoding=UTF-8'
export PATH="$JAVA_HOME/bin:$PATH"
PATH
で一番前に指定しているのは、apt
などパッケージマネージャでインストールしたものよりもdefault-java
を先に探してほしいからです。
書けたらexec $SHELL -l
でシェルを更新するのを忘れずに。
確認する
以上でJDKのインストールは終了です。
java
コマンドが使えるか確認しましょう。
java --version
Gradle
ビルドとかパッケージの依存管理とかしてくれるナウいタスクランナーがGradleです。
ダウンロードしてPATH
を通せば使えます。
再掲になりますが、JDKのバージョンによって動作するバージョンが異なるので注意です。
/usr/lib/gradle
に解凍する
ダウンロードして
Releasesから好きなバージョンのbinary-only
という方をダウンロードしてください。
ダウンロードできたら/usr/lib/gradle
に解凍します。
default-gradle
というリンクを張る
バージョン名そのままのフォルダでもいいんですが、いろいろと面倒になることが予想されるので、default-gradle
というリンクを張ることに……って2回目ですね。
sudo ln -s /usr/lib/gradle/gradle-7.4.2 /usr/lib/jvm/default-gradle
Gradleのバージョンはプロジェクト毎にgradle wrapper
でGradle Wrapperというものを作って管理するのが推奨されているようです。
環境変数を設定する
またまた.bash_profile
なりなんなり好きなところで以下の環境変数を設定します。
つまりこういうことです。
export GRADLE_HOME='/usr/lib/gradle/default-gradle'
export PATH="$GRADLE_HOME/bin:$PATH"
exec $SHELL -l
も忘れずに。
確認する
以上でGradleのインストールもできたはずです。
gradle
コマンドが使えるか確認しましょう。
gradle --version
と、いうわけで
これで好きなバージョンのJDKとGradleの組み合わせにすることができました。
バージョンを上げたいときはdefault-java
やdefault-gradle
を張り直せば最悪なんとかなります。
いや、jenv
使おうぜ……
Discussion