1. 程式人生 > >maven install時碰到的兩個問題(堆溢位和編譯錯誤)

maven install時碰到的兩個問題(堆溢位和編譯錯誤)

問題1.maven install時出現,日誌如下:

系統資源不足。
有關詳細資訊,請參閱以下堆疊追蹤。
java.lang.OutOfMemoryError: Java heap space
        at com.sun.tools.javac.util.List.prepend(List.java:145)
        at com.sun.tools.javac.jvm.ClassReader.openArchive(ClassReader.java:1457)
        at com.sun.tools.javac.jvm.ClassReader.list(ClassReader.java:1742)
        at com.sun.tools.javac.jvm.ClassReader.listAll(ClassReader.java:1882)
        at com.sun.tools.javac.jvm.ClassReader.fillIn(ClassReader.java:1903)
        at com.sun.tools.javac.jvm.ClassReader.complete(ClassReader.java:1538)
        at com.sun.tools.javac.code.Symbol.complete(Symbol.java:355)
        at com.sun.tools.javac.comp.Enter.visitTopLevel(Enter.java:256)
        at com.sun.tools.javac.tree.Tree$TopLevel.accept(Tree.java:382)
        at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:221)
        at com.sun.tools.javac.comp.Enter.classEnter(Enter.java:235)
        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.compile(JavaCompiler.java:404)
        at com.sun.tools.javac.main.Main.compile(Main.java:592)
        at com.sun.tools.javac.main.Main.compile(Main.java:544)
        at com.sun.tools.javac.Main.compile(Main.java:92)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.ja
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccesso
        at java.lang.reflect.Method.invoke(Method.java:592)
        at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(Javac
        at org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCompiler.
        at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMo
        at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginM
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defaul
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLife
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Default
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandl
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLife


        at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMo
        at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginM
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defaul
        ... 17 more
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 minutes 34 seconds
[INFO] Finished at: Wed Jul 20 17:22:53 CST 2011
[INFO] Final Memory: 60M/63M

[INFO] ------------------------------------------------------------------------

原因分析:虛擬機器堆溢位,預設只有63M,工程比較多時容易出現此問題

解決方案:在maven啟動指令碼(mvn.bat)中,重新設定堆大小(set MAVEN_OPTS= -Xms128m -Xmx512m)

問題2:maven install時出現此問題,日誌如下:

[INFO] Trace
org.apache.maven.BuildFailureException: Compilation failure
  at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:699)
  at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLi
fecycle(DefaultLifecycleExecutor.java:540)
  at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(Defau
ltLifecycleExecutor.java:519)
  at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHan
dleFailures(DefaultLifecycleExecutor.java:371)
  at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegmen
ts(DefaultLifecycleExecutor.java:332)
  at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLi
fecycleExecutor.java:181)
  at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:356)
  at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:137)
  at org.apache.maven.cli.MavenCli.main(MavenCli.java:356)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
  at java.lang.reflect.Method.invoke(Method.java:597)
  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)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation fail
ure
  at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompiler
Mojo.java:516)
  at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114)
  at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPlugi
nManager.java:483)
  at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(Defa
ultLifecycleExecutor.java:678)

原因分析:編譯不通過,檢查JDK版本

解決方案:使用正確的JDK版本,和開發時的一致