Maven 编译:执行 javac 失败

2022-09-03 05:34:03

以下是尝试在 Windows Server 2003 下使用 Maven 2.2.1 和 JDK 1.6.0_23 编译新签出的代码时遇到的异常。运行具有相同Maven和JDK版本的Ubuntu的几台机器在编译完全相同的源代码时完全没有问题。

尝试提供替代Maven选项(即MAVEN_OPTS=-Xms256m -Xmx1024m)无济于事。

这个问题的原因可能是什么,可能的解决方案是什么?感恩节。

[INFO] Compilation failure

Failure executing javac, but could not parse the error:


The system is out of resources.
Consult the following stack trace for details.
java.lang.StackOverflowError
    at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:1799)
    at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1522)
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
    at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:377)
    at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1241)
    at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1210)
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360)
   ... then trace repeats multiple times

答案 1

尝试

MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k

注:-Xss,应根据可用硬件进行设置


答案 2

您的任何代码都是自动生成的,例如从WSDL生成的?您能确定哪个类导致了问题吗?执行此操作的一种方法是删除一些源代码,重新编译并重复,直到缩小到类的一小部分。

你有任何大类或长方法吗?如果是这样,你应该重构。

增加堆栈大小。我认为默认值为512k。将编译器配置更改为:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>2.3.2</version>
  <configuration>
    <compilerArgument>-J -Xss10M</compilerArgument>
  </configuration>
</plugin>

推荐