Kiedy uruchamiam test Maven, pojawia się błąd java.lang.OutOfMemoryError. Wyszukuję w Google rozwiązania i próbowałem export MAVEN_OPTS=-Xmx1024m
, ale nie zadziałało. Każdy zna inne rozwiązania tego problemu, przy okazji używam maven 3.0
Z góry dziękuję
Wklej tutaj komunikat o błędzie po uruchomieniu „mvn test -e”
Testy zakończone niepowodzeniem: ostrzeżenie (junit.framework.TestSuite $ 1) testDefaultPigJob_1 (com.snda.dw.pig.impl.DefaultPigJobLocalTest) testDefaultPigJob_2 (com.snda.dw.pig.impl.DefaultPigJobLocalTest) Uruchomione testy: 11, niepowodzenia: 3, błędy: 0, pominięte: 0 10/11/01 13:37:18 INFO Executionengine.HExecutionEngine: Łączenie z hadoop fi le system pod adresem: file: /// [INFO] ----------------------------------------------- ------------------------- [INFO] BUILD FAILURE [INFO] ----------------------------------------------- ------------------------- [INFO] Całkowity czas: 30,063s [INFO] Zakończono o: poniedziałek, 1 listopada, 13:37:18 czasu PDT 2010 [INFO] Pamięć końcowa: 3M / 6M [INFO] ----------------------------------------------- ------------------------- [BŁĄD] Nie udało się wykonać celu org.apache.maven.plugins: maven-surefire-plugin: 2. 5: test (test domyślny) w projekcie dw.pig: Wystąpiły niepowodzenia testu. [BŁĄD] [BŁĄD] Zobacz E: \ Code \ Java \ workspace \ dw.pig \ target \ surefire-reports fo r wyniki poszczególnych testów. [BŁĄD] -> [Pomoc 1] org.apache.maven.lifecycle.LifecycleExecutionException: Nie udało się wykonać celu o rg.apache.maven.plugins: maven-surefire-plugin: 2.5: test (default-test) w projekcie dw.pig: Wystąpiły niepowodzenia testów. Zapoznaj się z E: \ Code \ Java \ workspace \ dw.pig \ target \ surefire-reports, aby uzyskać informacje o pliku in indywidualne wyniki badań. w org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor .java: 199) w org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor .java: 148) w org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor .java: 140) w org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje ct (LifecycleModuleBuilder.java:84) w org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje ct (LifecycleModuleBuilder.java:59) w org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu ild (LifecycleStarter.java:183) w org.apache.maven.lifecycle.internal.LifecycleStarter.execute (Lifecycl eStarter.java:161) w org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:314) w org.apache.maven.DefaultMaven.execute (DefaultMaven.java:151) w org.apache.maven.cli.MavenCli.execute (MavenCli.java:445) w org.apache.maven.cli.MavenCli.doMain (MavenCli.java:168) w org.apache.maven.cli.MavenCli.main (MavenCli.java:132) at sun.reflect.NativeMethodAccessorImpl.invoke0 (metoda natywna) w 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) w org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Laun cher.java:290) w org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.jav za: 230) w org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (La uncher.java:409) w org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java: 352) Przyczyna: org.apache.maven.plugin.MojoFailureException: Wystąpiły niepowodzenia testów . Zapoznaj się z E: \ Code \ Java \ workspace \ dw.pig \ target \ surefire-reports, aby uzyskać informacje o pliku in indywidualne wyniki badań. na org.apache.maven.plugin.surefire.SurefirePlugin.execute (SurefirePlugi n.java:629) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (domyślnie BuildPluginManager.java:107) w org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor .java: 195) ... 19 więcej [BŁĄD] [BŁĄD] Uruchom ponownie Mavena, używając przełącznika -X, aby włączyć pełne rejestrowanie debugowania. [BŁĄD] [BŁĄD] Aby uzyskać więcej informacji o błędach i możliwych rozwiązaniach, zajrzyj do d następujące artykuły: [BŁĄD] [Pomoc 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc
java
maven
out-of-memory
zjffdu
źródło
źródło
Odpowiedzi:
Ustawienie
Xmx
opcji za pomocąMAVEN_OPTS
działa, ale konfiguruje JVM używaną do uruchamiania Mavena. Że pod uwagę, że Maven-murowany-plugin widelce nowego JVM domyślnie, a twojeMAVEN_OPTS
nie są więc przekazywane.Aby skonfigurować rozmiar maszyny JVM używanej przez wtyczkę maven-surefire-plugin, należałoby albo:
forkMode
sięnever
(co jest być nie tak dobry pomysł, bo Maven nie będą izolowane od testu) ~ lub ~argLine
parametru (we właściwy sposób):W późniejszym przypadku coś takiego:
Ale muszę powiedzieć, że raczej się zgadza ze Szczepanem tutaj, jest bardzo prawdopodobne, coś nie tak z jednego testu i nie jestem pewien, że daje więcej pamięci jest dobrym rozwiązaniem, aby „rozwiązać” (ukrycia?) Problemu.
Bibliografia
źródło
forkMode
został wycofany: maven.apache.org/surefire/maven-surefire-plugin/…forkMode
został przestarzały, ale myślę, że tylko zostanie zastąpiony,forkCount
który ma podobną funkcjonalność. Jednym ze sposobów użycia MAVEN_OPTS jest,<argLine>${env.MAVEN_OPTS}</argLine>
ale najwyraźniej nie jest to zalecane, ponieważ może się różnić w zależności od komputera ( stackoverflow.com/a/10463133/32453 ). Pamiętaj również, że jeśli używasz jacoco, powinieneś ustawić argLine w inny sposób stackoverflow.com/questions/12269558/maven-jacoco-plugin-errorDla nowych w Maven (takich jak ja) tutaj jest cała konfiguracja, która znajduje się w sekcji kompilacji twojego pom. Twoje zdrowie.
źródło
Istnieje prawdopodobieństwo, że problem tkwi w jednym z testów jednostkowych, o wykonanie których poprosiłeś Mavena.
W związku z tym manipulowanie rozmiarem sterty jest niewłaściwym podejściem. Zamiast tego powinieneś przyjrzeć się testowi jednostkowemu, który spowodował OOME, i spróbować dowiedzieć się, czy jest to błąd testu jednostkowego, czy kodu, który testuje.
Zacznij od spojrzenia na ślad stosu. Jeśli go nie ma, uruchom
mvn ... test
ponownie z-e
opcją.źródło
Aby tymczasowo obejść ten problem, okazało się, że najszybszym sposobem jest:
źródło
Rozwiązałem ten problem po mojej stronie na 2 sposoby:
Dodanie tej konfiguracji w pom.xml
Przejdź na używany JDK 1.7 zamiast 1.6
źródło
Aby rozwiązać java.lang.OutOfMemoryError: przestrzeń sterty Java w Maven, spróbuj skonfigurować poniższą konfigurację w pom
źródło
Nie tylko pamięć sterty. również zwiększ rozmiar perm, aby rozwiązać ten wyjątek w maven, użyj tych zmiennych w zmiennej środowiskowej.
Przykład:
źródło