Gradleのtestタスクをコマンド実行したらJavaのバージョンが低くてFAILEDになった時の対処法

UnitTestをGradleをコマンド実行したらFAILEDとなり失敗。結論的にはローカル環境のJavaのバージョンが低かった。

$ ./gradlew test
> Task :test FAILED

FAILURE: Build failed with an exception.

build/reports/tests/test/index.htmlを確認すると以下のようなExceptionのログが出力されている。Java11でコンパイルされているけどJavaのRuntimeはJava8までしか認識できないと怒られてる。

org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'com.example.bffsample.repository.TaskRepositoryTest$GetTask'.
・・・
省略
・・・
Caused by: java.lang.UnsupportedClassVersionError: com/example/bffsample/repository/TaskRepositoryTest$GetTask has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
	at java.lang.ClassLoader.defineClass1(Native Method)

現在のJavaのバージョンを確認

$ javac -version
javac 1.8.0_45

インストール済みのJavaを確認。SpringBootのプロジェクト作成時にIntelliJからJava14をダウンロードしていたのでそれを使用する。

$ /usr/libexec/java_home -V
Matching Java Virtual Machines (3):
    14.0.2, x86_64:	"OpenJDK 14.0.2"
    1.8.0_45, x86_64:	"Java SE 8"
    1.8.0_20, x86_64:	"Java SE 8"

Java14を使用するようにPATHを変更して再度バージョン確認

$ sudo vi .bashrc
以下を追加
export JAVA_HOME=`/System/Library/Frameworks/JavaVM.framework/Versions/A/Com    mands/java_home -v 14`
PATH=$JAVA_HOME/bin:$PATH

$ source .bashrc
$ java -version
openjdk version "14.0.2" 2020-07-14
OpenJDK Runtime Environment (build 14.0.2+12-46)
OpenJDK 64-Bit Server VM (build 14.0.2+12-46, mixed mode, sharing)

再度Gradleコマンドを実行して成功することを確認

$ ./gradlew test
・
・
・
BUILD SUCCESSFUL in 30s
4 actionable tasks: 3 executed, 1 up-to-date

コメントを残す

メールアドレスが公開されることはありません。

ABOUT US
little
15年以上プログラマーをしているエンジニアです。Kotlin, Java, Python, C++を使用したServerSideの開発に携わってきました。とりあえずやってみるスタイルで記事を更新していきます。