Gradle のプロジェクトビルド時に lombok でStackOverflowError が出た時にやった事

久々に java のプロジェクトにコミットする事になったのですがその際に自分だけ何故か以下のエラーが出るという事が起きたのでその際の解決方法を載せておきます。。。

正直細かい原因は良く分からずでしたが同様のエラーに直面した人用に解消方法だけ掲載しておきます。

Caused by: java.lang.StackOverflowError at lombok.core.AST.setAndGetAsHandled

該当のプロジェクトでは gradlew を使っていたので gradlew build 実行時のエラーですが以下が出ました。

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':sample:compileTestJava'.
        at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:145)
        at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)

・・・以下省略・・・

で、長いスタックトレースの最後の方は以下のような感じでした。

Caused by: java.lang.StackOverflowError
        at lombok.core.AST.setAndGetAsHandled(AST.java:157)
        at lombok.javac.JavacAST.buildStatementOrExpression(JavacAST.java:474)
・・・以下省略・・・

解決方法

ホームディレクトリに .gradle というディレクトリがあるかと思いますが、その配下の gradle.properties に以下の記述をしてください。因みに gradle.properties は使ってなければ無いと思うので作成して下さい。自分の場合プロキシ設定などをするために作成していました。

systemProp.https.nonProxyHosts=host・・
# ↑プロキシ情報 ↓以下追加
org.gradle.jvmargs=-Xss1500k

jvmargs は実行時の JVM の引数でメモリのサイズを指定できるようです。

自分の場合はこれで解決しました。

こちらには maven プロジェクトで似たようなエラーが起きた際に MAVEN_OPTS-Xss1500k を指定する事で解決したとの事が書かれていましたので maven プロジェクトであっても似たようにメモリサイズを指定する事で解決できるようです。

以下学習用書籍