Rhythm & Biology

Engineering, Science, et al.

IntelliJ: Could not determine Java version using executable ...

macbookのロジックボードが壊れて修理に出したため、開発環境がすべて消え去ってしまった。
IntelliJJavaを書くための環境を再セットアップしようとしたところ、gradleのバージョン問題でちょっとつまづいたのでメモ。

環境

問題

Gradleプロジェクトを作り、その際、gradle wrapperを使うように指定しておく。
すると、以下のようなエラーが出て、ビルドが失敗してしまう。

Could not determine Java version using executable
/Library/Java/JavaVirtualMachines/jdk-10.0.1.jdk/Contents/Home/bin/java.

ざっと調べてみると、Javaのバージョニングの変更の影響で、java -versionの出力をgradleがうまく解釈できないことが原因であるらしい。

ではgradleでうまく解釈させることができるか、という問いに対しては「新しいgradleを入れる」ことが解となる。
stackoverflowなどで解決策として示されているのはローカルインストールした新しいgradleを利用するよう設定を変える、というものが多い。
確かにそれで解決するだろうけども、複数人開発してる場合にはgradle wrapperを使いたい。

解決

新しいgradle wrapperを入れる。
gradleをローカルインストールしておく必要はあるが、1回だけやってwrapperをリポジトリに含めてしまえば済む。

$ ls -a
./               ../              .idea/           build.gradle     settings.gradle

$ gradle wrapper --gradle-version=4.7 --distribution-type=bin
BUILD SUCCESSFUL in 1s
1 actionable task: 1 executed

$ ls -la
./               .gradle/         build.gradle     gradlew*         settings.gradle
../              .idea/           gradle/          gradlew.bat

この状態で、IntelliJでプロジェクトのSyncをかければ、無事エラーが消えたことが確認できる。