備忘録:intelliJでJavaのバージョン依存関係の解決手順
概要
IntelliJでjavaのバージョンの依存関係とか解決する手順をいつも失念するので一旦整理しておくもの。
JVMとかSDKとかJDKとかの理解がふわふわなのでいつかそのあたりの理解をふかめる必要がありそう。。。
詳細
GradleをSyncしたときなどで以下のエラー発生
A problem occurred configuring root project 'example-project'.
> Could not resolve all artifacts for configuration ':classpath'.
> Could not resolve org.springframework.boot:spring-boot-gradle-plugin:3.3.4.
Required by:
root project : > org.springframework.boot:org.springframework.boot.gradle.plugin:3.3.4
> Dependency requires at least JVM runtime version 17. This build uses a Java 11 JVM.
Dependency requires at least JVM runtime version 17. This build uses a Java 11 JVM.
訳:依存関係には、少なくともJVMランタイム・バージョン17が必要です。このビルドではJava 11 JVMを使用しています。
gradle-pluginの3.3.4では少なくともJVM runtime versionの17が必要とされているが、今の設定ではバージョン11を使っているのでエラーが出る。
確認ポイント
IntelliJのJDK設定
Project Structure(⌘ + ;
)
Project
タブ -> Project SDK
:java 17になっているか確認
Gradle JVMの設定
Settings(⌘ + ,
)
Build, Execution, Deployment
-> Build Tools
-> Gradle
-> Gradle JVM
を Java 17 に設定(たぶんProject SDK
にすればプロジェクトの設定に準じる形になるのでそうすれば良い気が吸う)
Gradleの設定
build.gradleのjavaのバージョンを17にする
gradleのsyncではエラーにならないし、taskから実行すると成功するのに、コマンドラインで./graldew bootRun
すると同じエラーが出る場合
コマンドラインがJAVA_HOMEを参照しているせいでうまくいかない説がある
$ echo $JAVA_HOME
ただし、sdkmanを使っている場合は、/Users/user/.sdkman/candidates/java/current
が表示されるだけになったりするので、そのときは以下で確認
$ java -version
バージョンが違ったら、以下のコマンドでインストール可能なjavaをリスト表示できるので、その中からプロジェクトで使っているjavaとおなじものを探す
$ sdk list java
探したら以下のコマンドでインストール
$ sdk install java {Identifier}
これでコマンドラインからもbootRunできるようになった