日々常々

ふつうのプログラマがあたりまえにしたいこと。

IntelliJ IDEAのGradleが使うJDKバージョン設定箇所

IntelliJ IDEAでGradleのタスク実行しようとしたら意図したバージョンで動作しなくて文句言われる場合の設定。複数のJDKを設定していなかったら起こらないと思います。

あ、Mavenも大体一緒です。

設定する場所

Build, Execution, DevelopmentBuild ToolsGradle にある Gradle JVM でGradleが使うJVMを選べます。

f:id:irof:20211019140803p:plain

このウィンドウはMacだとPreferences、WindowsだとSettingsです。なぜ違うかは知らない。

プルダウンを開くと使えるのがずらっと(複数のJDKを設定していればですが)。

f:id:irof:20211019141032p:plain

設定次第で色々ありますが Project SDK にしておくのがおすすめです。コード書くときとビルド時のJDKを変えたいなら選べるんですが、そいうケースはそんなに多くないでしょう。

JDK自体の設定は以下を参照。

irof.hateblo.jp

設定のツリー辿るの面倒

項目を覚えていればツリーを辿れますが、そんなことに記憶容量は割きたくありません。

IntelliJ IDEAさんは設定画面の検索窓にやりたい設定の項目をタイピングすればだいたい連れて行ってくれます。入力したワードを黄色の枠で強調してくれる。

f:id:irof:20211019142305p:plain

設定探すとき超便利。

とは言え今回は「Gradleの設定」ってわかっていて、絞り込みとかタイピングも面倒。一番すぐ出せるのはGradleのToolWindowのレンチボタン(🔧)から Gradle Settings... です。

f:id:irof:20211019142130p:plain

これクリックしたら最初の画面を一発で開いてくれる。

雑記

IntelliJ IDEA自体を動かすJDK(普段は存在を気にしないかもですが、メモリやfile.encodingを設定する時に「あーJDKで動いてるんだー」と気付きます。)、コード書くときに使うJDK(ProjectウィンドウのExternal Librariesに表示されます。一番目に入るし、意識するものかな。)、mainメソッドやJUnit実行時に使うJDK(▶️ボタンで実行する時の設定。通常はProject SDKですが他のも選べます。)Gradleタスクを実行する時に使うJDK(今回設定したもの)などがあり、それぞれ独立して設定、制御できます。

全部同じのを使えばいいと思われるかもしれませんが、別プロセスで動作するものですし、すなわちバージョンやメモリ量などJVMのオプションを変えられるということでもあります。これらが別に存在するのはある程度知識があれば認識できるようになりますし、別に存在するなら設定できるはず、設定できるなら設定箇所があるはず、と想像できるかと思います。

これらはいちいち気にしていたら脳のメモリが足りなくなるので、普段の開発では意識の外に置いておくのがいいことではあります。

とは言えトラブル時(よくあるのはエンコーディング違いによる文字化けやOOMEなど)にどれを設定すればいいかに当たりをつけて適切に処置するには必須の知識ですし、今後はおそらく避けては通れない「Javaのバージョンアップ」や「Javaのバージョン違いを検証する」際にどこをいじればいいかもわかってきます。IDEや開発環境はこの辺の複雑さをある程度隠すのが仕事とは言え、ちょっと意識を向けてあげてもいいのかな、と思います。

IDEJDKの話は以下のセッションでも触れています。

irof.hateblo.jp

3種類とか言ってますが「作る時に使うもの」はコード書く時に使うものと実行時に使うものに分けれますね。