maven package失败Fatal error compiling: ja va.lang.OutOfMemoryError: Java heap space

maven package失败Fatal error compiling: ja va.lang.OutOfMemoryError: Java heap space

java堆内存不够

[INFO] Compiling 967 source files to D:\workspace\nccs\branches\uat\nccsvcTemp\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 02:03 min
[INFO] Finished at: 2018-11-23T11:20:02+08:00
[INFO] Final Memory: 101M/247M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project 95522: Fatal error compiling: ja
va.lang.OutOfMemoryError: Java heap space -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] 

http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

解决办法

转自:http://blog.sina.com.cn/s/blog_65e13da00100n5ea.html

当Maven项目很大,或者你运行诸如 mvn site 这样的命令的时候,maven运行需要很大的内存,在默认配置下,就可能遇到java的堆溢出。如:

java.lang.OutOfMemoryError: Java heap space
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:99)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:518)
...
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 7 minutes 14 seconds
[INFO] Finished at: Wed Sep 05 07:44:55 CEST 2007
[INFO] Final Memory: 37M/63M
[INFO] ------------------------------------------------------------------------

解决的方法是调整java的堆大小的值。

Windows环境
找到文件%M2_HOME%\bin\mvn.bat或者mvn.cmd ,这就是启动Maven的脚本文件,在该文件中你能看到有一行注释为:

@REM set MAVEN_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE…

找到maven安装位置里的bin目录下的mvn.bat或者mvn.cmd

然后在@REM set MAVEN_OPTS=-Xdebug…下边找个地方设置一些Maven参数,加入一行:
set MAVEN_OPTS= -Xms128m -Xmx512m
之后,当你运行Maven命令如 mvn -version 的时候,你会看到如下的输出:

C:\Users\Jeffery>mvn -version

C:\Users\Jeffery>set MAVEN_OPTS= -Xms128m -Xmx512m
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: D:\Java\apache-maven-3.3.9\bin\..
Java version: 1.8.0_102, vendor: Oracle Corporation
Java home: C:\Program Files (x86)\Java\jdk1.8.0_102\jre
Default locale: zh_CN, platform encoding: GBK
OS name: "windows 10", version: "10.0", arch: "x86", family: "dos"

我们看到,配置的Maven选项生效了,OutOfMemoryError也能得以相应的解决。

Linux环境

也可以通过设置环境变量解决该问题, 如,编辑文件 /etc/profile 如下

MAVEN_OPTS=-Xmx512m
export JAVA_HOME MAVEN_HOME MAVEN_OPTS JAVA_BIN PATH CLASSPATH

`
Hudson

用 Hudson + Maven做持续集成,并不幸也遇到了类似的错误,那么上述两种方式都将不再起作用了,因为Hudson使用自己的maven-agent来启动Maven,不会去调用Maven的脚本,自然相应的配置也就无效了。

好在Hudson也给为我们提供了配置点,在Hudson的项目配置页面中,有一块Build区域,这里我们已经设置了Root Pom和Goals。注意该区域的右下角有一个"Advanced…“按钮,点击会看到MAVEN_OPTS输入框,这里输入”-Xmx512m"就OK了。

m2eclipse

类似以上的方法都会失效,所幸m2eclipse提供了配置点。步骤如下:

项目上右击 -> Run As -> Run Configurations -> Maven Build 上右击 -> New

这时会看到一个maven运行配置对话框,这里面其它的配置我不多解释了,为了解决内存溢出的问题,我们可以选择第二个TAB: JRE,然后在VM arguments中输入配置如:-Xms128m -Xmx512m。
————————————————
版权声明:本文为CSDN博主「柳岩是个大菜鸟」的原创文章。
原文链接:https://blog.csdn.net/liuyancainiao/article/details/84379590
链接: liuyancainiao的博客.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值