intellij-idea中maven编译项目出现内存溢出现象的解决方法

intellij-idea中maven编译项目出现内存溢出现象的解决方法

来源:http://outofmemory.cn/java/OutOfMemoryError/intellij-idea-maven-compile-OutOfMemoryError

在Intellij-idea中用maven编译项目时出现了下面的异常信息:

系统资源不足。
有关详细信息,请参阅以下堆栈追踪。
java.lang.OutOfMemoryError: Java heap space
	at com.sun.tools.javac.zip.ZipFileIndex$ZipDirectory.findCENRecord(ZipFileIndex.java:698)
	at com.sun.tools.javac.zip.ZipFileIndex$ZipDirectory.<init>(ZipFileIndex.java:665)
	at com.sun.tools.javac.zip.ZipFileIndex.checkIndex(ZipFileIndex.java:260)
	at com.sun.tools.javac.zip.ZipFileIndex.<init>(ZipFileIndex.java:209)
	at com.sun.tools.javac.zip.ZipFileIndex.getZipFileIndex(ZipFileIndex.java:115)
	at com.sun.tools.javac.util.DefaultFileManager.openArchive(DefaultFileManager.java:636)
	at com.sun.tools.javac.util.DefaultFileManager.listDirectory(DefaultFileManager.java:325)
	at com.sun.tools.javac.util.DefaultFileManager.list(DefaultFileManager.java:872)
	at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:2130)
	at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:1781)
	at com.sun.tools.javac.code.Symbol.complete(Symbol.java:386)
	at com.sun.too
ls.javac.comp.Enter.visitTopLevel(Enter.java:272)
	at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:446)
	at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:236)
	at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:250)
	at com.sun.tools.javac.comp.Enter.complete(Enter.java:444)
	at com.sun.tools.javac.comp.Enter.main(Enter.java:429)
	at com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:819)
	at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:727)
	at com.sun.tools.javac.main.Main.compile(Main.java:353)
	at com.sun.tools.javac.main.Main.compile(Main.java:279)
	at com.sun.tools.javac.main.Main.compile(Main.java:270)
	at com.sun.tools.javac.Main.compile(Main.java:87)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Met
hod.invoke(Method.java:597)
	at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(JavacCompiler.java:554)
	at org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCompiler.java:161)
	at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:605)
	at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
	at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)

[INFO] 1error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
Failure executing javac, but could not parse the error:

系统资源不足。
有关详细信息,请参阅以下堆栈追踪。
java.lang.OutOfMemoryError: Java heap space
	at com.sun.tools.javac.zip.ZipFileIndex$ZipDirectory.findCENRecord(ZipF
ileIndex.java:698)
	at com.sun.tools.javac.zip.ZipFileIndex$ZipDirectory.<init>(ZipFileIndex.java:665)
	at com.sun.tools.javac.zip.ZipFileIndex.checkIndex(ZipFileIndex.java:260)
	at com.sun.tools.javac.zip.ZipFileIndex.<init>(ZipFileIndex.java:209)
	at com.sun.tools.javac.zip.ZipFileIndex.getZipFileIndex(ZipFileIndex.java:115)
	at com.sun.tools.javac.util.DefaultFileManager.openArchive(DefaultFileManager.java:636)
	at com.sun.tools.javac.util.DefaultFileManager.listDirectory(DefaultFileManager.java:325)
	at com.sun.tools.javac.util.DefaultFileManager.list(DefaultFileManager.java:872)
	at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:2130)
	at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:1781)
	at com.sun.tools.javac.code.Symbol.complete(Symbol.java:386)
	at com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:272)
	at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:446)
	at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:236)
	at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:250)
	at com.sun.tools.javac.comp.Enter.complete(Enter.java:444)
	at com.sun.tools.javac.comp.Enter.main(Enter.java:429)
	at com.sun.tools.javac.main.JavaCompiler.enterTrees(JavaCompiler.java:819)
	at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:727)
	at com.sun.tools.javac.main.Main.compile(Main.java:353)
	at com.sun.tools.javac.main.Main.compile(Main.java:279)
	at com.sun.tools.javac.main.Main.compile(Main.java:270)
	at com.sun.tools.javac.Main.compile(Main.java:87)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(JavacCompiler.java:554)
	at org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCo
mpiler.java:161)

四个字就是:内存溢出了,出现这个问题,首先我们第一印象是maven内存不够用了,于是修改maven的bat文件,修改它的内存,但是修改后没有效果。然后我们会继续修改intellij-idea的内存,但是都没有效果。

为什么呢?因为我们没有找对点,我们应该修改pom.xml文件中编译插件的内存设置,如下:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <fork>true</fork>
          <meminitial>512m</meminitial>
          <maxmem>1048m</maxmem>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

你需要根据你的实际情况修改maven-compiler-plugin的内存配置。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值