Wenn ich einen Maventest ausführe, passiert java.lang.OutOfMemoryError. Ich google es nach Lösungen und habe es versucht export MAVEN_OPTS=-Xmx1024m
, aber es hat nicht funktioniert. Jeder kennt andere Lösungen für dieses Problem, übrigens verwende ich Maven 3.0
Danke im Voraus
Fügen Sie hier die Fehlermeldung ein, wenn Sie "mvn test -e" ausführen.
Fehlgeschlagene Tests: Warnung (junit.framework.TestSuite $ 1) testDefaultPigJob_1 (com.snda.dw.pig.impl.DefaultPigJobLocalTest) testDefaultPigJob_2 (com.snda.dw.pig.impl.DefaultPigJobLocalTest) Testlauf: 11, Fehler: 3, Fehler: 0, Übersprungen: 0 10/11/01 13:37:18 INFO Executionengine.HExecutionEngine: Verbindung zu Hadoop Fi herstellen Das System unter: file: /// [DIE INFO] ----------------------------------------------- ------------------------- [INFO] FEHLER ERSTELLEN [DIE INFO] ----------------------------------------------- ------------------------- [INFO] Gesamtzeit: 30.063s [INFO] Fertiggestellt am: Mon Nov 01 13:37:18 PDT 2010 [INFO] Endspeicher: 3M / 6M [DIE INFO] ----------------------------------------------- ------------------------- [FEHLER] Fehler beim Ausführen des Ziels org.apache.maven.plugins: maven-surefire-plugin: 2. 5: Test (Standardtest) für Projekt dw.pig: Es gibt Testfehler. [ERROR] [FEHLER] Weitere Informationen finden Sie unter E: \ Code \ Java \ workspace \ dw.pig \ target \ surefire-reports fo r die einzelnen Testergebnisse. [FEHLER] -> [Hilfe 1] org.apache.maven.lifecycle.LifecycleExecutionException: Ziel o konnte nicht ausgeführt werden rg.apache.maven.plugins: Maven-Surefire-Plugin: 2.5: Test (Standardtest) für Projekt dw.pig: Es gibt Testfehler. Weitere Informationen finden Sie unter E: \ Code \ Java \ workspace \ dw.pig \ target \ surefire-reports einzelne Testergebnisse. unter org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor Java: 199) unter org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor .java: 148) unter org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor .java: 140) unter org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje ct (LifecycleModuleBuilder.java:84) unter org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje ct (LifecycleModuleBuilder.java:59) at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu ild (LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (Lifecycl eStarter.java:161) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:314) at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:151) bei org.apache.maven.cli.MavenCli.execute (MavenCli.java:445) unter org.apache.maven.cli.MavenCli.doMain (MavenCli.java:168) unter org.apache.maven.cli.MavenCli.main (MavenCli.java:132) at sun.reflect.NativeMethodAccessorImpl.invoke0 (native Methode) 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.plexus.classworlds.launcher.Launcher.launchEnhanced (Laun cher.java:290) unter org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.jav a: 230) unter org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (La uncher.java:409) unter org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java: 352) Auslöser: org.apache.maven.plugin.MojoFailureException: Es liegen Testfehler vor . Weitere Informationen finden Sie unter E: \ Code \ Java \ workspace \ dw.pig \ target \ surefire-reports einzelne Testergebnisse. unter org.apache.maven.plugin.surefire.SurefirePlugin.execute (SurefirePlugi n.java:629) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (Standard BuildPluginManager.java:107) unter org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor Java: 195) ... 19 mehr [ERROR] [FEHLER] Führen Sie Maven erneut mit dem Schalter -X aus, um die vollständige Debug-Protokollierung zu aktivieren. [ERROR] [FEHLER] Weitere Informationen zu Fehlern und möglichen Lösungen finden Sie hier d die folgenden Artikel: [FEHLER] [Hilfe 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc
java
maven
out-of-memory
zjffdu
quelle
quelle
Antworten:
Das Festlegen der
Xmx
Optionen mithilfe vonMAVEN_OPTS
funktioniert, konfiguriert die JVM, die zum Starten von Maven verwendet wird. That being said, Maven-todsichere-Plugin Gabeln eine neue JVM standardmäßig und IhrMAVEN_OPTS
sind somit nicht bestanden.Um die Größe der vom Maven-Surefire-Plugin verwendeten JVM zu konfigurieren, müssten Sie entweder:
forkMode
innever
(was eine nicht so gute Idee ist, weil Maven nicht vom Test isoliert wird) ~ oder ~argLine
Parameter (der richtige Weg):Im späteren Fall so etwas:
Aber ich muss sagen, dass ich Stephen hier eher zustimme. Es ist sehr wahrscheinlich, dass mit einem Ihrer Tests etwas nicht stimmt, und ich bin mir nicht sicher, ob es die richtige Lösung ist, mehr Speicher zu geben, um Ihr Problem zu "lösen" (zu verbergen?).
Verweise
quelle
forkMode
wurde veraltet: maven.apache.org/surefire/maven-surefire-plugin/…forkMode
ist veraltet, aber ich denke nur ersetzt zu werden,forkCount
die ähnliche Funktionen hat. Eine Möglichkeit, MAVEN_OPTS zu verwenden, besteht darin<argLine>${env.MAVEN_OPTS}</argLine>
, dass dies anscheinend nicht empfohlen wird, da es von Computer zu Computer unterschiedlich sein kann ( stackoverflow.com/a/10463133/32453 ). Beachten Sie auch, dass Sie, wenn Sie Jacoco verwenden, argLine auf eine andere Weise einstellenFür diejenigen, die neu bei Maven sind (wie ich), ist hier die gesamte Konfiguration, die im Build-Bereich Ihres Poms enthalten ist. Prost.
quelle
Die Chancen stehen gut, dass das Problem in einem der Unit-Tests liegt, zu deren Ausführung Sie Maven aufgefordert haben.
Daher ist das Herumspielen mit der Heap-Größe der falsche Ansatz. Stattdessen sollten Sie sich den Komponententest ansehen, der das OOME verursacht hat, und herausfinden, ob es sich um den Fehler des Komponententests oder des zu testenden Codes handelt.
Betrachten Sie zunächst die Stapelverfolgung. Wenn es keine gibt, führen Sie sie
mvn ... test
erneut mit der-e
Option aus.quelle
Um dieses Problem vorübergehend zu umgehen, fand ich Folgendes am schnellsten:
quelle
Ich habe dieses Problem auf meiner Seite auf zwei Arten gelöst:
Hinzufügen dieser Konfiguration in pom.xml
Wechseln Sie zu verwendetem JDK 1.7 anstelle von 1.6
quelle
Versuchen Sie, die folgende Konfiguration in pom zu konfigurieren, um java.lang.OutOfMemoryError: Java-Heapspeicher in Maven aufzulösen
quelle
Nicht nur Heapspeicher. Erhöhen Sie auch die Dauerwellengröße, um diese Ausnahme in Maven zu beheben. Verwenden Sie diese Variablen in Umgebungsvariablen.
Beispiel:
quelle