intellij-idea中maven編譯專案出現記憶體溢位現象的解決方

solution發表於2021-09-09

在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.(ZipFileIndex.java:665) at com.sun.tools.javac.zip.ZipFileIndex.checkIndex(ZipFileIndex.java:260) at com.sun.tools.javac.zip.ZipFileIndex.(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.(ZipFileIndex.java:665) at com.sun.tools.javac.zip.ZipFileIndex.checkIndex(ZipFileIndex.java:260) at com.sun.tools.javac.zip.ZipFileIndex.(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檔案中編譯外掛的記憶體設定,如下:

   [...]        [...]                     org.apache.maven.plugins          

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2459/viewspace-2805670/,如需轉載,請註明出處,否則將追究法律責任。

相關文章