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