由于Maven Surefire,构建失败

4

请问有人知道为什么在运行这个软件包的测试后我会收到这个错误消息吗?我已经尝试增加内存,但没有成功。现在我真的很绝望想要解决这个问题。这个项目包含应用程序的客户端,大多数测试需要运行GUI(Swing)。如果不是每个线程都能正确关闭GUI,是否会出现任何问题?

[JENKINS] Recording test results
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 38:47.399s
[INFO] Finished at: Mon Jun 22 12:22:11 CEST 2015
[INFO] Final Memory: 58M/171M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project ferps2ClientProd: ExecutionException: java.lang.RuntimeException: The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
Waiting for Jenkins to finish collecting data
[ERROR] Command was /bin/sh -c cd /var/lib/jenkins/jobs/ferps2ClientProd/workspace/ferps2ClientProd && /usr/lib/jvm/java-7-oracle/jre/bin/java -Xmx1G org.apache.maven.surefire.booter.ForkedBooter /var/lib/jenkins/jobs/ferps2ClientProd/workspace/ferps2ClientProd/target/surefire/surefire4816148809193217327tmp /var/lib/jenkins/jobs/ferps2ClientProd/workspace/ferps2ClientProd/target/surefire/surefire_2554625457500993091404tmp
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.18.1:test (default-test) on project ferps2ClientProd: ExecutionException
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:117)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
    at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:178)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at hudson.maven.Maven3Builder.call(Maven3Builder.java:136)
    at hudson.maven.Maven3Builder.call(Maven3Builder.java:71)
    at hudson.remoting.UserRequest.perform(UserRequest.java:121)
    at hudson.remoting.UserRequest.perform(UserRequest.java:49)
    at hudson.remoting.Request$2.run(Request.java:324)
    at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.maven.plugin.MojoFailureException: ExecutionException
    at org.apache.maven.plugin.surefire.SurefirePlugin.assertNoException(SurefirePlugin.java:262)
    at org.apache.maven.plugin.surefire.SurefirePlugin.handleSummary(SurefirePlugin.java:252)
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:854)
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:722)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    ... 30 more
Caused by: org.apache.maven.surefire.booter.SurefireBooterForkException: ExecutionException
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.runSuitesForkPerTestSet(ForkStarter.java:343)
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:178)
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:990)
    at org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:824)
    ... 33 more
Caused by: java.util.concurrent.ExecutionException: java.lang.RuntimeException: The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
Command was /bin/sh -c cd /var/lib/jenkins/jobs/ferps2ClientProd/workspace/ferps2ClientProd && /usr/lib/jvm/java-7-oracle/jre/bin/java -Xmx1G org.apache.maven.surefire.booter.ForkedBooter /var/lib/jenkins/jobs/ferps2ClientProd/workspace/ferps2ClientProd/target/surefire/surefire4816148809193217327tmp /var/lib/jenkins/jobs/ferps2ClientProd/workspace/ferps2ClientProd/target/surefire/surefire_2554625457500993091404tmp
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:188)
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.runSuitesForkPerTestSet(ForkStarter.java:327)
    ... 36 more
Caused by: java.lang.RuntimeException: The forked VM terminated without properly saying goodbye. VM crash or System.exit called?
Command was /bin/sh -c cd /var/lib/jenkins/jobs/ferps2ClientProd/workspace/ferps2ClientProd && /usr/lib/jvm/java-7-oracle/jre/bin/java -Xmx1G org.apache.maven.surefire.booter.ForkedBooter /var/lib/jenkins/jobs/ferps2ClientProd/workspace/ferps2ClientProd/target/surefire/surefire4816148809193217327tmp /var/lib/jenkins/jobs/ferps2ClientProd/workspace/ferps2ClientProd/target/surefire/surefire_2554625457500993091404tmp
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:515)
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:380)
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter.access$300(ForkStarter.java:88)
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter$2.call(ForkStarter.java:315)
    at org.apache.maven.plugin.surefire.booterclient.ForkStarter$2.call(ForkStarter.java:306)
    ... 4 more
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

这是我的POM文件中的插件部分:
<build>
<finalName>Ferpsclient</finalName>
<plugins>
  <plugin>
    <artifactId>maven-checkstyle-plugin</artifactId>
    <version>2.12.1</version>
  </plugin>
  <plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.18.1</version>
    <configuration>
        <useManifestOnlyJar>false</useManifestOnlyJar>
        <useSystemClassLoader>false</useSystemClassLoader>
        <reuseForks>false</reuseForks>
        <skipTests>${skipTests}</skipTests>
        <forkedProcessTimeoutInSeconds>300</forkedProcessTimeoutInSeconds>
        <forkCount>1C</forkCount>
        <argLine>-XX:MaxPermSize=1G</argLine>
        <argLine>-Xmx1G</argLine>
    </configuration>
  </plugin>
  <plugin>
    <artifactId>maven-surefire-report-plugin</artifactId>
    <version>2.17</version>
  </plugin>
  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.5.1</version>
    <configuration>
        <encoding>ISO-8859-1</encoding>         
        <source>1.7</source>
        <target>1.7</target>
    </configuration>
  </plugin>
  <plugin>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <!-- mainClass>at.felder.Application</mainClass-->
            </manifest>
            <manifestEntries>
                <Permissions>all-permissions</Permissions>
            </manifestEntries>

        </archive>
    </configuration>
  </plugin>
   <plugin>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.3</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <artifactSet>
                    <!-- includes>
                        <include>at.felder:ferps2Core:*</include>
                        <include>at.felder:ferps2API:*</include>
                    </includes-->
                </artifactSet>
            </configuration>
        </execution>
    </executions>
  </plugin>
</plugins>


正如@user3207081建议的那样,使用-X开关重新运行Maven以获取完整日志记录。 - Keppil
我注意到你正在使用超时,这表明测试要么卡住了,要么花费的时间比你预期的长。 - chrylis -cautiouslyoptimistic-
/bin/sh -c cd /var/lib/jenkins/jobs/ferps2ClientProd/workspace/ferps2ClientProd && /usr/lib/jvm/java-7-oracle/jre/bin/java -Xmx1G org.apache.maven.surefire.booter.ForkedBooter /var/lib/jenkins/jobs/ferps2ClientProd/workspace/ferps2ClientProd/target/surefire/surefire4816148809193217327tmp /var/lib/jenkins/jobs/ferps2ClientProd/workspace/ferps2ClientProd/target/surefire/surefire_2554625457500993091404tmp 这个命令执行失败。 - Jerry Z.
只是瞎猜:但第一个内存参数丢失了。也许尝试:<argLine>-XX:MaxPermSize=512M -Xmx2G</argLine>(一行,目前第二行获胜)?如果这是由于某些内存问题引起的,这可能会做些其他事情。 - wemu
1个回答

3

您应该重新设计SureFire插件配置中的argLine标签,使其类似于以下内容:

<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>

基本上,您需要将两个参数合并为一个标记,并增加分配。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接