Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven surefire与Jacoco、JMockit和JDK14的插件问题_Maven_Jacoco_Jmockit_Java 14 - Fatal编程技术网

Maven surefire与Jacoco、JMockit和JDK14的插件问题

Maven surefire与Jacoco、JMockit和JDK14的插件问题,maven,jacoco,jmockit,java-14,Maven,Jacoco,Jmockit,Java 14,我试图将我的项目从JDK11升级到JDK14,但在将java版本设置为14后运行测试失败。当我将jacoco与JMockit结合使用时,我将构建配置如下(编辑:jacoco版本为0.8.3/0.8.5,JMockit版本1.49): 我在surefire argLine的配置中找到了问题所在的@{argLine}。如果我删除这个,构建运行得很好。不幸的是,JaCoCo需要这种配置。没有它,它不会生成任何报告 有什么建议吗 附录:刚刚发现,使用JDK14运行时测试失败。它不依赖于pom中设置的编译

我试图将我的项目从JDK11升级到JDK14,但在将java版本设置为14后运行测试失败。当我将jacoco与JMockit结合使用时,我将构建配置如下(编辑:jacoco版本为0.8.3/0.8.5,JMockit版本1.49):

我在surefire argLine的配置中找到了问题所在的@{argLine}。如果我删除这个,构建运行得很好。不幸的是,JaCoCo需要这种配置。没有它,它不会生成任何报告

有什么建议吗


附录:刚刚发现,使用JDK14运行时测试失败。它不依赖于pom中设置的编译版本。

根据JaCoCo changelog()的说法,JaCoCo版本0.8.5中添加了对Java 14类文件的支持,但是最新版本JMockit版本1.49仍然不完全支持Java 11字节码-请参阅JMockit中的开放票证:

JMockit应固定以正确处理condy()


对于那些不迫切需要JDK14+的用户,只有升级到JDK13才能防止此问题的发生。

访问


它清楚地提到了对JDK14的支持。将“jacoco maven插件”更新为“0.8.6”。

您使用哪一版本的jacoco?尝试了0.8.3和0.8.5。两者都不起作用。
    <build>
    <plugins>
        <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>${version.jacoco}</version>
            <executions>
                <execution>
                    <id>coverage-initialize</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
                <execution>
                    <id>coverage-report</id>
                    <phase>post-integration-test</phase>
                    <goals>
                        <goal>report</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>${version.surefire-plugin}</version>
            <configuration>
                <argLine>
                    @{argLine} -javaagent:"${settings.localRepository}"/org/jmockit/jmockit/${version.jmockit}/jmockit-${version.jmockit}.jar
                </argLine>
            </configuration>
        </plugin>
...
[ERROR] java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo.
[ERROR]         at org.jacoco.agent.rt.internal_1f1cc91.CoverageTransformer.transform(CoverageTransformer.java:93)
[ERROR] sun.util.locale.provider.LocaleDataMetaInfo: Unable to load sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo
[ERROR]         at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:246)
[ERROR]         at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
[ERROR]         at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:563)
[ERROR]         at java.base/java.lang.ClassLoader.defineClass2(Native Method)
[ERROR]         at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1109)