Posted at

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

More than 1 year has passed since last update.


はじめに

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も最新にアップデートしてみてください。