Lorsque j'exécute le test maven, java.lang.OutOfMemoryError se produit. Je cherche des solutions sur Google et j'ai essayé deexport MAVEN_OPTS=-Xmx1024m
, mais cela n'a pas fonctionné. Tout le monde connaît d'autres solutions à ce problème, BTW j'utilise maven 3.0
Merci d'avance
Collez le message d'erreur ici lors de l'exécution de "mvn test -e"
Tests échoués: avertissement (junit.framework.TestSuite $ 1) testDefaultPigJob_1 (com.snda.dw.pig.impl.DefaultPigJobLocalTest) testDefaultPigJob_2 (com.snda.dw.pig.impl.DefaultPigJobLocalTest) Tests exécutés: 11, échecs: 3, erreurs: 0, ignorés: 0 10/11/01 13:37:18 INFO executionengine.HExecutionEngine: Connexion à hadoop fi le système de fichiers à: file: /// [INFO] ----------------------------------------------- ------------------------- [INFO] ÉCHEC DE LA CONSTRUCTION [INFO] ----------------------------------------------- ------------------------- [INFO] Durée totale: 30,063 s [INFO] Terminé à: Mon Nov 01 13:37:18 PDT 2010 [INFO] Mémoire finale: 3M / 6M [INFO] ----------------------------------------------- ------------------------- [ERREUR] Échec de l'exécution de l'objectif org.apache.maven.plugins: maven-surefire-plugin: 2. 5: test (test par défaut) sur le projet dw.pig: Il y a des échecs de test. [ERREUR] [ERREUR] Veuillez vous référer à E: \ Code \ Java \ workspace \ dw.pig \ target \ surefire-reports fo r les résultats des tests individuels. [ERREUR] -> [Aide 1] org.apache.maven.lifecycle.LifecycleExecutionException: échec de l'exécution de l'objectif o rg.apache.maven.plugins: maven-surefire-plugin: 2.5: test (test par défaut) sur le projet dw.pig: Il y a des échecs de test. Veuillez vous référer à E: \ Code \ Java \ workspace \ dw.pig \ target \ surefire-reports pour le in résultats des tests individuels. à org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor .java: 199) à org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor .java: 148) à org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor .java: 140) à org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje ct (LifecycleModuleBuilder.java:84) à org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje ct (LifecycleModuleBuilder.java:59) à org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu ild (LifecycleStarter.java:183) à org.apache.maven.lifecycle.internal.LifecycleStarter.execute (Lifecycl eStarter.java:161) à org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:314) à org.apache.maven.DefaultMaven.execute (DefaultMaven.java:151) à org.apache.maven.cli.MavenCli.execute (MavenCli.java:445) à org.apache.maven.cli.MavenCli.doMain (MavenCli.java:168) à org.apache.maven.cli.MavenCli.main (MavenCli.java:132) à sun.reflect.NativeMethodAccessorImpl.invoke0 (méthode native) à sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl. java: 39) à sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAcces sorImpl.java:25) à java.lang.reflect.Method.invoke (Method.java:597) à org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Laun cher.java:290) à org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.jav un: 230) à org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (La uncher.java:409) à org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java: 352) Causé par: org.apache.maven.plugin.MojoFailureException: il y a des échecs de test . Veuillez vous référer à E: \ Code \ Java \ workspace \ dw.pig \ target \ surefire-reports pour le in résultats des tests individuels. à org.apache.maven.plugin.surefire.SurefirePlugin.execute (SurefirePlugi n.java:629) à org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (par défaut BuildPluginManager.java:107) à org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor .java: 195) ... 19 plus [ERREUR] [ERREUR] Réexécutez Maven en utilisant le commutateur -X pour activer la journalisation complète du débogage. [ERREUR] [ERROR] Pour plus d'informations sur les erreurs et les solutions possibles, veuillez consulter d les articles suivants: [ERREUR] [Aide 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc
java
maven
out-of-memory
zjffdu
la source
la source
Réponses:
La configuration des
Xmx
options à l'aide deMAVEN_OPTS
ne fonctionne pas, elle configure la JVM utilisée pour démarrer Maven. Cela étant dit, le plugin maven-surefire-plugin forge une nouvelle JVM par défaut, et vousMAVEN_OPTS
n'êtes donc pas passé.Pour configurer le dimensionnement de la JVM utilisée par le plugin maven-surefire, il faudrait soit:
forkMode
ennever
(ce qui n'est pas une très bonne idée car Maven ne sera pas isolé du test) ~ ou ~argLine
paramètre (dans le bon sens):Dans le dernier cas, quelque chose comme ceci:
Mais je dois dire que j'ai tendance à être d'accord avec Stephen ici, il y a très probablement quelque chose qui ne va pas avec l'un de vos tests et je ne suis pas sûr que donner plus de mémoire soit la bonne solution pour «résoudre» (cacher?) Votre problème.
Références
la source
forkMode
est obsolète: maven.apache.org/surefire/maven-surefire-plugin/…forkMode
est obsolète, mais je pense qu'il ne doit être remplacé que parforkCount
ce qui a des fonctionnalités similaires. Une façon d'utiliser MAVEN_OPTS est,<argLine>${env.MAVEN_OPTS}</argLine>
mais ce n'est apparemment pas recommandé car cela peut varier d'un ordinateur à l'autre ( stackoverflow.com/a/10463133/32453 ). Notez également que si vous utilisez jacoco, vous êtes censé définir argLine d'une manière différente stackoverflow.com/questions/12269558/maven-jacoco-plugin-errorPour ceux qui découvrent Maven (comme moi), voici toute la configuration qui va dans la section build de votre pom. À votre santé.
la source
Il est fort probable que le problème se situe dans l'un des tests unitaires que vous avez demandé à Maven d'exécuter.
En tant que tel, manipuler la taille du tas est la mauvaise approche. Au lieu de cela, vous devriez regarder le test unitaire qui a provoqué l'OOME et essayer de déterminer s'il s'agit de la faute du test unitaire ou du code qu'il teste.
Commencez par regarder la trace de la pile. S'il n'y en a pas, exécutez à
mvn ... test
nouveau avec l'-e
option.la source
Pour contourner temporairement ce problème, j'ai trouvé que c'était le moyen le plus rapide:
la source
J'ai résolu ce problème de mon côté de 2 manières:
Ajout de cette configuration dans pom.xml
Passer au JDK 1.7 utilisé au lieu de 1.6
la source
Afin de résoudre java.lang.OutOfMemoryError: espace de tas Java dans Maven, essayez de configurer la configuration ci-dessous dans pom
la source
Pas seulement de la mémoire. augmentez également la taille de la perm pour résoudre cette exception dans maven, utilisez ces variables dans la variable d'environnement.
Exemple :
la source