java.lang.OutOfMemoryError:Maven 中的 Java 堆空间

新手上路,请多包涵

当我运行 Maven 测试时,发生 java.lang.OutOfMemoryError 。我在谷歌上搜索了解决方案并尝试了 export MAVEN_OPTS=-Xmx1024m ,但它没有用。有人知道这个问题的其他解决方案吗?我正在使用 maven 3.0

运行时在此处粘贴错误消息 mvn test -e

失败的测试:
  警告(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
文件系统位于:file:///
[信息]-------------------------------------------- --------------------------
[信息] 构建失败
[信息]-------------------------------------------- --------------------------
[信息]总时间:30.063s
[信息] 完成时间:2010 年 11 月 1 日星期一 13:37:18 PDT
[信息] 最终内存:3M/6M
[信息]-------------------------------------------- --------------------------
[错误] 无法执行目标 org.apache.maven.plugins:maven-surefire-plugin:2。
5:test (default-test) on project dw.pig: 有测试失败。
[错误]
[ERROR] 请参考 E:\Code\Java\workspace\dw.pig\target\surefire-reports fo
r 个人测试结果。
[错误] -> [帮助 1]
org.apache.maven.lifecycle.LifecycleExecutionException:无法执行目标 o
rg.apache.maven.plugins:maven-surefire-plugin:2.5:test (default-test) 项目
 dw.pig:有测试失败。

in请参考E:\Code\Java\workspace\dw.pig\target\surefire-reports
个别测试结果。
        在 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(生命周期
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(本机方法)
        在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl。
爪哇:39)
        在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccess
sorImpl.java:25)
        在 java.lang.reflect.Method.invoke(Method.java:597)
        在 org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Laun
谢尔.java:290)
        在 org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.jav
一个:230)
        在 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: 有测试失败
.

in请参考E:\Code\Java\workspace\dw.pig\target\surefire-reports
个别测试结果。
        在 org.apache.maven.plugin.surefire.SurefirePlugin.execute(SurefirePlugi
n.java:629)
        在 org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(默认
BuildPluginManager.java:107)
        在 org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor
.java:195)
        ... 19 更多
[错误]
[错误] 使用 -X 开关重新运行 Maven 以启用完整的调试日志记录。
[错误]
[ERROR] 有关错误和可能的解决方案的更多信息,请阅读
d 以下条款:
[错误] [帮助 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureExc

原文由 zjffdu 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 927
2 个回答

当我运行 maven 测试时,java.lang.OutOfMemoryError 发生了。我在谷歌上搜索解决方案并尝试导出 MAVEN_OPTS=-Xmx1024m,但没有成功。

使用 MAVEN_OPTS 设置 Xmx 选项确实有效,它确实配置了用于启动 Maven 的 JVM。也就是说,默认情况下 maven-surefire-plugin 会 分叉 一个新的 JVM,因此您的 MAVEN_OPTS 不会通过。

要配置 maven-surefire-plugin 使用的 JVM 大小,您必须:

  • forkMode 更改为 never (这不是一个好主意,因为 Maven 不会与测试隔离)
  • 使用 argLine 参数(正确的方式):

在后一种情况下,是这样的:

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

我不得不说,我倾向于同意 Stephen 的观点,你的一项测试很可能有问题,我不确定提供更多内存是“解决”(隐藏?)你的问题的正确解决方案。

参考

原文由 Pascal Thivent 发布,翻译遵循 CC BY-SA 2.5 许可协议

对于 Maven 的新手(比如我),这里是 pom.xml 的构建部分中的整个配置。干杯。

 <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>

原文由 WizardsOfWor 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题