web-dev-qa-db-ja.com

java.lang.OutOfMemoryError:Java Mavenのヒープスペース

Mavenテストを実行すると、Java.lang.OutOfMemoryErrorが発生します。私は解決策を求めてグーグルでexport MAVEN_OPTS=-Xmx1024mを試みましたが、うまくいきませんでした。誰もがこの問題の他の解決策を知っています、ところで私はmaven 3.0を使用しています

前もって感謝します

「mvn test -e」を実行するときにエラーメッセージをここに貼り付けます

失敗したテスト:
 warning(junit.framework.TestSuite $ 1)
 testDefaultPigJob_1(com.snda.dw.pig.impl.DefaultPigJobLocalTest)
 testDefaultPigJob_2(com。 snda.dw.pig.impl.DefaultPigJobLocalTest)
 
テスト実行:11、失敗:3、エラー:0、スキップ:0 
 
 10/11/01 13:37:18 INFO executionengine.HExecutionEngine:hadoop fi 
 leシステムへの接続:file:/// 
 [INFO] ------------- -------------------------------------------------- --------- 
 [INFO]ビルド障害
 [INFO] ----------------------- ------------------------------------------------- 
 [情報]合計時間:30.063s 
 [情報]終了日:月11月1日13:37:18 PDT 2010 
 [情報]最終メモリ:3M/6M 
 [INFO] --------------------------------------------- --------------------------- 
 [エラー]ゴールの実行に失敗しましたorg.Apache.maven.plugins:maven-surefire -plugin:2。
 5:test(default-test)on project dw.pig:テストの失敗があります。
 [エラー] [.___ _。] [エラー] E:\ Code\Java\workspace\dw.pig\target\surefire-reports for 
 r個々のテスト結果を参照してください。
 [エラー]-> [ヘルプ1] 
 org.Apache.maven.lifecycle.LifecycleExecutionException:ゴールo 
 rg.Apache.maven.plugins:maven-surefire-plugin:2.5:test(デフォルトテスト)の実行に失敗しましたon project 
 dw.pig:テストエラーがあります。
 
 inについてはE:\ Code\Java\workspace\dw.pig\target\surefire-reportsを参照してください
個々のテスト結果。
 org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor 
。Java:199)
 at org.Apache。 maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor 
。Java:148)
 at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor 
。Java: 140)
 at org.Apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProje 
 ct(LifecycleModuleBuilder.Java:84)
 at org.Apache.maven.lifecycle.internal。ライフシーcleModuleBuilder.buildProje 
 ct(LifecycleModuleBuilder.Java:59)
 at org.Apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBu 
 ild(LifecycleStarter.Java:183)
 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)
 at org.Apache.maven.cli.MavenCli.execute(MavenCli.Java:445)
 org.Apache.maven.cli.MavenCli.doMain(MavenCli.Java:168)
 at org.Apache.maven.cli.MavenCli.main(MavenCli.Java:132)
 Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 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)
 at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav 
 a:230)
 at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (La 
 uncher.Java:409)
 org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.Java:
 352)
 Caused by:org.Apache.maven.plugin.MojoFailureException:テストの失敗があります
。
 
 E:\ Code\Java\workspace\dw.pig\target \を参照してくださいorg.Apache.maven.plugin.surefire.SurefirePlugin.execute(SurefirePlugi 
 n.Java:629)[.____での
個別のテスト結果のsurefire-reports。
 。] org.Apache.maven.plugin.DefaultBuildPluginManager.executeMojo(Default 
 BuildPluginManager.Java:107)
 at org.Apache.maven.lifecycle.internal.MojoExecutor.exe cute(MojoExecutor 
。Java:195)
 ... 19 more 
 [ERROR] 
 [ERROR] -Xスイッチを使用してMavenを再実行して有効にします完全なデバッグロギング。
 [エラー] 
 [エラー]エラーおよび可能な解決策の詳細については、次の記事を再
 dしてください:
 [エラー] [ヘルプ1] http://cwiki.Apache.org/confluence/display/MAVEN/MojoFailureExc
116
zjffdu

Mavenテストを実行すると、Java.lang.OutOfMemoryErrorが発生します。私はそれを解決のためにグーグルで検索し、MAVEN_OPTS = -Xmx1024mをエクスポートしようとしましたが、うまくいきませんでした。

MAVEN_OPTSを使用してXmxオプションを設定すると機能しますが、Mavenの起動に使用されるJVMを構成します。そうは言っても、maven-surefire-plugin forks はデフォルトで新しいJVMなので、MAVEN_OPTSは渡されません。

Maven-surefire-pluginが使用するJVMのサイズを設定するには、次のいずれかを行う必要があります。

  • forkModeneverに変更します(Mavenはテストから隔離されないため、あまり良い考えではありません)〜または〜
  • argLine パラメーターを使用します(正しい方法):

後者の場合、次のようになります。

<configuration>
  <argLine>-Xmx1024m</argLine>
</configuration>

しかし私はここでスティーブンに同意する傾向があると言わざるを得ません。より多くのメモリを提供することが、問題を「解決」(非表示?)するための適切なソリューションです。

参照資料

154
Pascal Thivent

(私のような)Mavenを初めて使用する場合は、pomのビルドセクションに含まれる設定全体がここにあります。乾杯。

<build>
    <plugins>
      <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.19</version>
        <configuration>
            <argLine>-Xmx1024m</argLine>
        </configuration>
      </plugin>
    </plugins>
  </build>
59
user738048

可能性としては、Mavenの実行を要求した単体テストのいずれかに問題がある可能性があります。

そのため、ヒープサイズをいじるのは間違ったアプローチです。代わりに、OOMEの原因となったユニットテストを調べて、それがユニットテストの障害なのか、それがテストしているコードなのかを把握する必要があります。

スタックトレースを確認することから始めます。存在しない場合は、mvn ... testオプションを指定して-eを再度実行します。

12
Stephen C

この問題を一時的に回避するには、次の方法が最も簡単な方法であることがわかりました。

export Java_TOOL_OPTIONS="-Xmx1024m -Xms1024m"
7
Max Hohenegger

私は2つの方法で私の側でこの問題を解決しました:

  1. この構成をpom.xmlに追加する

    <configuration><argLine>-Xmx1024m</argLine></configuration>
    
  2. 1.6ではなく使用済みのJDK 1.7に切り替えます

6
Minh Dang

Java.lang.OutOfMemoryError:MavenのJavaヒープスペースを解決するには、pomで以下の構成を構成してください。

<plugin>
  <groupId>org.Apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>${maven-surefire-plugin.version}</version>
     <configuration>
        <verbose>true</verbose>
        <fork>true</fork>
        <argLine>-XX:MaxPermSize=500M</argLine>
    </configuration>
</plugin>
1