在Java Maven中发生了StackOverflowError
Java在使用Maven进行构建时,遇到StackOverflowError错误的解决方法记录如下。
- エラー内容
[ERROR] システム・リソースが不足しています。
[ERROR] 詳細は次のスタック・トレースで調査してください。
[ERROR] java.lang.StackOverflowError
-
- 原因
-
- これは初めから予測はついていた。他システムと連携するAPI関連のモジュールクラスが5万ステップに達するほど大きかったため。コードをなんとかするのが一番きれいな解決策だが、そうできない事情があったため今回は以下で対応
対応
2つの対応方法があります。
対応方法1
MAVENの環境変数でビルド時のStackサイズを増やす。
SET MAVEN_OPTS=-Xms256m -Xmx1024m -Xss2048k
-Xss2048kでStackサイズを指定しています。
対応方法2
pom.xml内でStackサイズをセットする。
※compilerArgsはmaven-compiler-plugin3.1以降で対応です
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<compilerArgs>
<arg>-J-Xss2048k</arg>
</compilerArgs>