Java 9でGradleのエラー「Could not determine java version from '9.0.1'.」が出るときの対処方法

はじめに

Spring BootでGradleプロジェクトを触っていた時に「Could not determine java version from '9.0.1'.」というエラーに遭遇したので、その対処方法を書いておきます。
なお、エラーが発生した環境は下記の通りです。

  • macOS High Sierra(10.13.2)
  • Java Development Kit 9(9.0.1)
  • IntelliJ IDEA 2017.3(Ultimate Edition)
  • Spring Boot 2.0.0M7(Spring Initializr)
  • Gradle 4.2

障害の状況

IntelliJ IDEAにてSpring Initializrのテンプレートを利用して新規にプロジェクトを作成しました。
その際、Project SDKにはJava 9を、TypeにGradle Projectを選択しウィザードを進めていったのですが、作成されたプロジェクトでは「Could not determine java version from '9.0.1'.」のメッセージが表示されていました。

原因

これはビルドに用いるGradle 4.2がJava 9をサポートしていないことに起因しています。Java 8からJava 9に変わった際、バージョン番号の表記方法が「1.8.x」から「9.x.x」に変わったのですが、Gradle 4.2までは古い表記方法で解釈するように作られており、実行環境のJavaのバージョンを正確に特定できないがためにこのようなエラーが発生していたのです。
今回は、IntelliJ IDEA上で障害が発生しましたが、同様の現象はJavaのバージョン9以降とGradleのバージョン4.2以前の組み合わせであれば、上記以外の環境でも発生します。

対処方法

実はこの障害はGradle 4.2.1にてすでに修正されており、Gradleのバージョンを4.2.1以降にバージョンアップすれば解消できます。
ローカル・インストールしたGradleを利用している場合は、バージョン4.2.1以降のGradleにバージョンアップすれば解消しますし、Gradle Wrapperを利用している場合は、gradle-wrapper.propertiesのdistributionUrlでバージョン4.2.1以降のGradleを指定すれば解消します。
今回はGradle Wrapperを利用していたので、下記のように設定を変更しました。

gradle-wrapper.properties
#Fri Jul 28 13:37:07 BST 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.2.1-bin.zip

まとめ

エラー・メッセージを元にネットで検索すると、Java 8を使うように促す回答がいくつか見つかります。でも、せっかくJava 9を使おうとしているのにJava 8に戻るのは少しもったいないですよね。Java 9を使うような新し物好きの方は、ぜひGradleも最新にアップデートしてみてください。

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.