繁体   English   中英

Maven编译:执行javac失败

[英]Maven compilation: Failure executing javac

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

尝试提供替代的 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

尝试

MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k

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

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

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

以下是一些可能的原因:

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

我也遇到过同样的问题。 为了解决我所做的,是-我在控制台中运行了以下命令

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

代替-

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

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

-XX:MaxPermSize=384m

-XX:MaxPermSize=512m

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM