Gradle:Could not target platform: ‘Java SE 12’ using tool chain: ‘JDK 8 (1.8)’.
問題
Gradleの実行で
Could not target platform: 'Java SE 12' using tool chain: 'JDK 8 (1.8)'.
というエラーが発生した。もちろん、build.gradleにおいて、
sourceCompatibility = 12
targetCompatibility = 12
としているからなのだが、なぜJava8が実行されているのかわからない。
Eclipse上のEGradleを使用しても、コマンドプロンプトで生のgradle.batを呼び出しても同じエラーになる。
–infoをつけて実行してみると、
C:\devel\workspace\Module>gradle --info compileJava
gradle --info compileJava
Initialized native services in: C:\Users\Owner\.gradle\native
Starting process 'command 'C:\Program Files\AdoptOpenJDK\jdk-8.0.212.04-hotspot\bin\java.exe''. Working directory: C:\devel\workspace\Module Command: C:\Program Files\AdoptOpenJDK\jdk-8.0.212.04-hotspot\bin\java.exe -version
(略)
* What went wrong:
Execution failed for task ':compileJava'.
> Could not target platform: 'Java SE 12' using tool chain: 'JDK 8 (1.8)'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 3s
1 actionable task: 1 executed
たしかにjava8でコンパイルしようとしている。
解決
c:\user\ユーザ名.gradle\gradle.propertiesの定義のせいであった。ここがJava8になっていたのだが、
org.gradle.java.home=C:/Program Files/AdoptOpenJDK/jdk-12.0.1.12-hotspot
などとして、Java12を指定しなければならなかった。
Gradleはどこのjavaを使うのか?
正式な文書が見つからないのだが、調査してみたところでは以下らしい。
- JAVA_HOMEが設定されていれば、そのJDKを使う。
- gradle.propertiesにorg.gradle.java.homeが設定されていればそちらを優先する。
- 両方とも設定されていなければ、現在パスの通っているjavaコマンドを使う。
ディスカッション
コメント一覧
まだ、コメントがありません