Maven编译:执行javac失败

时间:2011-01-24 13:25:15

标签: java maven-2 stack-overflow

以下是尝试使用Maven 2.2.1和JDK 1.6.0_23在Windows Server 2003下编译新签出的代码时获得的异常。使用相同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

5 个答案:

答案 0 :(得分:13)

尝试

MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k

注意:-Xss,应根据可用的硬件设置

答案 1 :(得分:8)

您的任何代码都是自动生成的,例如从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>

答案 2 :(得分:2)

  

这个问题可能是什么原因以及可能的解决方案是什么?感谢名单。

以下是一些可能的原因:

  • 堆栈实际上太小了。修复 - 设置更大的堆栈大小。
  • 您正在编写病理类或方法。修复 - 尝试识别文件,识别病理并重构它。
  • 您遇到了java编译器错误。修复 - 尝试识别文件,识别触发错误的内容,并重构它以解决错误。
  • 您以某种方式设法将损坏的JAR文件放入Windows计算机上的Maven本地存储库中。修复 - 擦除存储库并重建。 (这可能需要重新下载一堆工件和插件。)

答案 3 :(得分:0)

我也遇到过同样的问题。 为了解决它我所做的,是 - 我在控制台

中运行了以下命令
set MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k *-XX:MaxPermSize=384m

而不是 -

set MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k *-XX:MaxPermSize=128m

试试这个,肯定会有用。如果仍然遇到同样的问题,请更换

-XX:MaxPermSize=384m

-XX:MaxPermSize=512m

答案 4 :(得分:0)

以下评论是一个有效的答案

set MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k -XX:MaxPermSize=384m"