2012-01-27 66 views
2

如果我建立一个使用投影:运行在OOM错误MVN安装结果

MVN安装

我看到以下内容:

[ERROR] COMPILATION ERROR : 
[INFO] ------------------------------------------------------------- 
[ERROR] Failure executing javac, but could not parse the error: 


The system is out of resources. 
Consult the following stack trace for details. 
java.lang.OutOfMemoryError: PermGen space 

我不知道我会在哪里更新我的java选项?

我在ubuntu上运行这个。

+1

的可能重复[java.lang.OutOfMemoryError:PermGen的空间(http://stackoverflow.com/questions/3101128/java-lang-outofmemoryerror-permgen-space) – 2012-01-27 17:21:50

+0

Duplicate:http://stackoverflow.com/questions/2210005/config-maven-2-to-print-out-javac-commands-during-compile-phase – 2012-01-27 17:23:48

回答

4

调整你的maven选项。通常这在/ etc/mavenrc,$ {HOME} /。mavenrc或Windows环境属性对话框中设置。

export MAVEN_OPTS="-Xmx512M -XX:MaxPermSize=512M" 

已经为一些工作,你可能需要向上撞击数(根据您的情况)

第一个选项“-Xmx512M”配置最大的内存,而第二个选项“-XX:MaxPermSize参数= 512M“允许PermGen空间的增长与最大内存一样大(在这种情况下)。

+0

Down vote因为它在工作的同时,会使任何遵循此建议的项目在PC之间移动时都面临风险。 – Virmundi 2014-01-16 14:03:07

7

如果您不喜欢依赖某人的环境,您可以指定fork编译器插件并为其分配足够的内存。

我建议你实际上是在你的父POM项目<pluginManagment>部分做到这一点

<build> 
    ... 
    <pluginManagment> 
    ... 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
     ... 

     <!-- Memory management --> 
     <fork>true</fork> 
     <meminitial>128m</meminitial> 
     <maxmem>512m</maxmem> 

     ... 
     </configuration> 
    </plugin> 
    ... 
    </pluginManagment> 
    ... 
</build> 
+0

所以这引发了一个新的jvm反对使用os默认使用的那个? – codecompleting 2012-01-30 21:36:37

+0

@codecompleting。正确。 – 2012-01-31 17:14:42

+0

对于后代,你想要做到这一点。它让平台上的操作变得更容易,因为git克隆设置Maven环境而无需触摸PC。它还可以在配置问题时保持配置的容易访问(pom是第一个观看堆栈跟踪的地方,所以在技术上看是第二个地方)。 – Virmundi 2014-01-16 14:02:19