【问题标题】:Maven Surefire: Error occured in starting forkMaven Surefire:启动分叉时发生错误
【发布时间】:2019-08-20 17:01:49
【问题描述】:

当我尝试运行时

mvn 测试

我总是收到错误消息,即在星叉中出现 maven-surefire 错误。它与我的本地设置有关,在我的同事 PC 上它工作正常。我希望有人知道我的电脑出了什么问题:)

错误信息的一部分:

  1. [ERROR] 未能执行目标 org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test 项目练习00-assignment01上的(默认测试):发生错误 启动 fork,检查日志中的输出 -> [帮助 1] org.apache.maven.lifecycle.LifecycleExecutionException:未能执行目标 org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test 项目练习00-assignment01上的(默认测试):发生错误 启动 fork,检查日志中的输出

  2. Caused by:
        org.apache.maven.surefire.booter.SurefireBooterForkException: Error
        occurred in starting fork, check output in log
            at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork
        (ForkStarter.java:284)
    

我用的是win10,jdk:1.8.0_202,maven:3.6.0

我的 pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>at.tuwien.swtesting</groupId>
    <artifactId>exercise00-assignment01</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <packaging>jar</packaging> 

    <name>01-RingBufferTest</name>
    <description>Entry exercise.</description>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>  
        <dependency>  
            <groupId>junit</groupId>  
            <artifactId>junit</artifactId>  
            <version>4.12</version>  
            <scope>test</scope>  
        </dependency>  
    </dependencies>

</project>

【问题讨论】:

  • 首先请升级到至少2.22.1的maven-surefire-plugin....
  • 我需要在哪里更新这个版本?我无法修改 pom.xml
  • 不能修改pom?没有意义...
  • pom.xml 来自我的课程讲座,通常它也应该与此设置一起使用。在我同事的 PC 上,它正在处理这个文件。
  • 请显示完整的错误输出...

标签: maven junit maven-surefire-plugin


【解决方案1】:

在尝试了许多其他建议后对我有用的另一个解决方案是为每个测试类设置一个 fork。将 fork 设置为 0 间歇性地工作,我希望在使用 debug=true 运行时工作,它们每次都通过(调试中没有 fork)。 3.0.0-M4

surefire forkcount documentation

<plugins>
    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-surefire-plugin</artifactId>
       <configuration>
         <forkCount>number of test classes</forkCount>
       </configuration>
    </plugin>
</plugins>

【讨论】:

    【解决方案2】:

    我最近遇到了同样的问题。经过大量研究,我低于分辨率

    ForkCount 应设置为“0”

    将你的 pom 文件更新为:-

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
            <forkCount>0</forkCount>
            <suiteXmlFiles>`enter code here`
            <suiteXmlFile>testng.xml</suiteXmlFile>
            </suiteXmlFiles>
            </configuration>
        </plugin>
    </plugins>
    

    【讨论】:

    • 我也试过3.0.0-M3版本,构建成功
    【解决方案3】:

    所以我在 pom.xml 中添加了以下代码

    <build>
            <pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-surefire-plugin</artifactId>
                        <version>3.0.0-M3</version>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    

    错误消息已更改:

    [错误] 请参考转储文件(如果有的话)[日期].dump, [日期]-jvmRun[N].dump 和 [日期].dumpstream。 [错误] 发生错误 开始分叉,检查日志中的输出 [错误] org.apache.maven.surefire.booter.SurefireBooterForkException:错误 发生在启动分叉中,请检查日志 [ERROR] 中的输出 org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:623) [错误] 在 org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:283) [错误] 在 org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:246)

    编辑

    我终于找到了我的问题,在我的文件夹路径中有一个“&”,windows 无法处理它。这就是不同错误消息的原因

    【讨论】:

    • 您的意思是“&”在 cmd.exe 字符串中吗?我的是“cmd.exe /X /C”C:\Users\someone\tools\jdk-8u211\jre\bin\java -javaagent:C:\\Users\\someone\\.m2\\repository\\org \\jacoco\\org.jacoco.agent\\0.7.7.201606060606\\org.jacoco.agent-0.7.7.201606060606-runtime.jar=destfile=C:\\Users\\someone\\abc_repo\\bbb_repo\\services -parent\\payment-services-settlement-impl\\..\\target\\jacoco.exec,append=true -noverify -Duser.timezone=US/Central -Duser.language=en org.apache.maven.surefire .booter.ForkedBooter C:\Users\someone\AppData\Local\Temp\surefire5536645681570537156 ..."
    • 很长。不知道如何缩短。
    猜你喜欢
    • 2022-01-17
    • 2011-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 2018-07-15
    相关资源
    最近更新 更多