Gradle构建时出现StackOverflowError

时间:2018-07-17 13:37:20

标签: 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)

如何解决此问题的根本原因或可能的解决方法?

1 个答案:

答案 0 :(得分:0)

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