在构建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)
如何解决此问题的根本原因或可能的解决方法?
答案 0 :(得分:0)
增加堆栈大小,例如通过在命令行参数中添加-Xss1024k
。只要这不是JavacParser
中的递归问题,增加堆栈大小就可以解决问题。