2011-01-24 17 views
10

Esta es una excepción que obtenemos al intentar compilar un código recién desprotegido en Windows Server 2003 con Maven 2.2.1 y JDK 1.6.0_23. Varias máquinas que ejecutan Ubuntu con la misma versión de Maven y JDK no tienen problemas compilando exactamente la misma fuente.Compilación de Maven: Error al ejecutar javac

Han intentado proporcionar opciones alternativas de Maven (es decir, MAVEN_OPTS = -Xms256m -Xmx1024m) en vano.

¿Cuál podría ser la causa de este problema y cuál sería una posible solución? Gracias.

[INFO] Compilation failure 

Failure executing javac, but could not parse the error: 


The system is out of resources. 
Consult the following stack trace for details. 
java.lang.StackOverflowError 
    at com.sun.tools.javac.comp.Attr.visitSelect(Attr.java:1799) 
    at com.sun.tools.javac.tree.JCTree$JCFieldAccess.accept(JCTree.java:1522) 
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360) 
    at com.sun.tools.javac.comp.Attr.attribExpr(Attr.java:377) 
    at com.sun.tools.javac.comp.Attr.visitApply(Attr.java:1241) 
    at com.sun.tools.javac.tree.JCTree$JCMethodInvocation.accept(JCTree.java:1210) 
    at com.sun.tools.javac.comp.Attr.attribTree(Attr.java:360) 
    ... then trace repeats multiple times 
+0

'MAVEN_OPTS = -Xms256m -Xmx1024m' aumentará la pila de memoria –

Respuesta

12

tratar

MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k

Nota: -Xss, se fijará de acuerdo con el hardware disponible

+0

Aceptando esta, ya que fue la primera respuesta que funcionó. La respuesta de @dogbane es potencialmente más flexible ya que está relacionada con el proyecto en lugar de estar relacionada con el sistema (MAVEN_OPTS es una variable de entorno). – 01es

+1

+1, ya que esto me ayudó a descubrir lo que supongo es la solución para http://stackoverflow.com/questions/9229020/jenkins-not-showing-maven-compiler-errors/10857174#10857174 (o al menos era mi problema, como se detalla en mi respuesta al respecto) – haylem

7

es cualquiera de su código, por ejemplo, siendo generada automáticamente de un WSDL? ¿Puedes identificar qué clase (s) está causando el problema? Una forma de hacerlo sería eliminar parte de su fuente, volver a compilar y repetir hasta que se haya reducido a un pequeño subconjunto de clases.

¿Tiene alguna clase larga o métodos largos? Si es así, deberías refactorizar.

Aumenta el tamaño de la pila. Creo que el valor predeterminado es 512k. Cambiar la configuración del compilador:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
    <compilerArgument>-J -Xss10M</compilerArgument> 
    </configuration> 
</plugin> 
+3

+1 El compilerArgument no funcionó para mí (argumento inválido de javac por algún motivo). Sin embargo, compilerArguments (plural) sí. Como nota al margen, la documentación de maven (http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#compilerArguments) establece que fork debe establecerse en true para compilerArgument y compilerArguments para ser usado. – 01es

+1

La mayoría [de la documentación reciente] (http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html) dice que '' ahora está en desuso y debe usar ' 'en cambio. –

+0

En 3.5.x experto debería establecerse de esta manera: org.apache.maven.plugins maven-compilador-plugin 3.5.1 cierto -J-Xss4m

2

lo que podría ser la causa de este problema y lo que sería una posible solución? Gracias.

Estas son algunas de las causas posibles:

  • La pila es realmente demasiado pequeño. Solución: configure un tamaño de pila más grande.
  • Está recopilando una clase o método patológico. Solución: intente e identifique el archivo, identifique la patología y vuelva a configurarlo.
  • Te has encontrado con un error del compilador de Java. Solución: intente e identifique el archivo, identifique qué desencadena el error y vuelva a configurarlo para solucionar el error.
  • De alguna manera ha logrado obtener un archivo JAR corrupto en el repositorio local de Maven en el equipo con Windows. Solución: limpie el repositorio y vuelva a generar. (Esto puede implicar volver a descargar un montón de artefactos y complementos).
0

También me he encontrado con el mismo problema. solucionarlo lo que hice, es- me encontré con el siguiente comando en la consola

set MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k *-XX:MaxPermSize=384m 

lugar de-

set MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k *-XX:MaxPermSize=128m 

Pruebe esto, sería definitivamente el trabajo.Si todavía tienes el mismo problema vuelva a colocar

-XX:MaxPermSize=384m 

a

-XX:MaxPermSize=512m 
+0

Trasladado a Java 8, que ya no usa permgen. – 01es

0

El comentario abajo es una respuesta de trabajo

set MAVEN_OPTS=-Xms256m -Xmx1024m -Xss1024k -XX:MaxPermSize=384m" 
Cuestiones relacionadas