java - gradle 构建时出现 StackOverflowError

标签 java gradle

我在构建 Gradle 项目时遇到以下异常。 (请注意,我已经修剪了堆栈跟踪以避免困惑。但由于重复调用,实际堆栈会更长。)

17:28:15.884 [ERROR] [system.err] The system is out of resources.
17:28:15.885 [ERROR] [system.err] Consult the following stack trace for details.
17:28:15.885 [ERROR] [system.err] java.lang.StackOverflowError
17:28:15.886 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavaTokenizer.readToken(JavaTokenizer.java:538)
17:28:15.886 [ERROR] [system.err]       at com.sun.tools.javac.parser.Scanner.nextToken(Scanner.java:115)
17:28:15.886 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.nextToken(JavacParser.java:301)
17:28:15.886 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.arguments(JavacParser.java:1816)
17:28:15.886 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.arguments(JavacParser.java:1833)
17:28:15.886 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.term3(JavacParser.java:1294)
17:28:15.887 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.term2(JavacParser.java:909)
17:28:15.887 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.term1(JavacParser.java:880)
17:28:15.887 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:836)
17:28:15.887 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.term(JavacParser.java:816)
17:28:15.887 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.parseExpression(JavacParser.java:779)
17:28:15.887 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.parExpression(JavacParser.java:2299)
17:28:15.888 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.parseStatement(JavacParser.java:2483)
17:28:15.888 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.blockStatement(JavacParser.java:2391)
17:28:15.888 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.blockStatements(JavacParser.java:2337)
17:28:15.888 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.block(JavacParser.java:2308)
17:28:15.888 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.block(JavacParser.java:2322)
17:28:15.888 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.parseStatement(JavacParser.java:2480)
17:28:15.888 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.blockStatement(JavacParser.java:2391)
17:28:15.889 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.parseStatementAsBlock(JavacParser.java:2356)
17:28:15.889 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.parseStatement(JavacParser.java:2484)
17:28:15.889 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.blockStatement(JavacParser.java:2391)
17:28:15.889 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.blockStatements(JavacParser.java:2337)
17:28:15.889 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.block(JavacParser.java:2308)
17:28:15.889 [ERROR] [system.err]       at com.sun.tools.javac.parser.JavacParser.block(JavacParser.java:2322)

我通过触发以下命令找到了 ThreadStackSize 选项的值:

java -XX:+PrintFlagsFinal -version | grep ThreadStackSize

输出如下:

     intx CompilerThreadStackSize                   = 0                                   {pd product}
     intx ThreadStackSize                           = 320                                 {pd product}
     intx VMThreadStackSize                         = 512                                 {pd product}
java version "1.8.0_171"
Java(TM) SE Runtime Environment (build 1.8.0_171-b11)
Java HotSpot(TM) Server VM (build 25.171-b11, mixed mode)

如何解决此问题背后的根本原因或可以采取哪些解决办法?

最佳答案

增加堆栈大小,例如通过将 -Xss1024k 添加到命令行参数。只要这不是 JavacParser 中的递归问题,增加堆栈大小就可以解决问题。

关于java - gradle 构建时出现 StackOverflowError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51382829/

相关文章:

java - 有没有办法从 hdfs 读取 mapdb map ?

android - 如何在 Gradle 中的 buildType 上添加条件 afterEvaluate

java - SQL 查询将值视为列名

java - 分发预配置的 Eclipse 的好解决方案?

java.lang.NoClassDefFoundError : io/reactivex/subjects/Subject when building jar in Intellij Idea (gradle + JavaFX 11)

Gradle错误,创建目录失败

安卓测试 : Dagger2 + Gradle

java - 如何在 Mac 上设置 gradle

java - 在 java 中安排单线程重复运行,但如果上一次运行未完成则跳过当前运行

java - 运行 JAR 文件而不直接调用 `java`