はじめに
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を利用していたので、下記のように設定を変更しました。
#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も最新にアップデートしてみてください。