在java maven jacoco中执行测试时出错:无法执行目标org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test
早上好。我正在执行一个Maven项目,并使用NetBeans编写Java代码。当我尝试运行测试文件时,出现此错误:
cd C:\Users\ruimi\Documents\NetBeansProjects\erro_testes_unitarios; "JAVA_HOME=C:\\Program Files\\Java\\jdk-14" cmd /c "\"C:\\Program Files\\netbeans 11.3 tenativa 1000\\NetBeans-11.3\\netbeans\\java\\maven\\bin\\mvn.cmd\" -Dtest=com.mycompany.erro_testes_unitarios.NewMainTest -Dmaven.ext.class.path=\"C:\\Program Files\\netbeans 11.3 tenativa 1000\\NetBeans-11.3\\netbeans\\java\\maven-nblib\\netbeans-eventspy.jar\" -Dfile.encoding=UTF-8 test-compile surefire:test"
Scanning for projects...
------------------------------------------------------------------------
Building erro_testes_unitarios 1.0-SNAPSHOT
------------------------------------------------------------------------
--- jacoco-maven-plugin:0.7.7.201606060606:prepare-agent (default) @ erro_testes_unitarios ---
argLine set to -javaagent:C:\\Users\\ruimi\\.m2\\repository\\org\\jacoco\\org.jacoco.agent\\0.7.7.201606060606\\org.jacoco.agent-0.7.7.201606060606-runtime.jar=destfile=C:\\Users\\ruimi\\Documents\\NetBeansProjects\\erro_testes_unitarios\\target\\jacoco.exec
--- maven-resources-plugin:2.6:resources (default-resources) @ erro_testes_unitarios ---
Using 'UTF-8' encoding to copy filtered resources.
skip non existing resourceDirectory C:\Users\ruimi\Documents\NetBeansProjects\erro_testes_unitarios\src\main\resources
--- maven-compiler-plugin:3.1:compile (default-compile) @ erro_testes_unitarios ---
Nothing to compile - all classes are up to date
--- maven-resources-plugin:2.6:testResources (default-testResources) @ erro_testes_unitarios ---
Using 'UTF-8' encoding to copy filtered resources.
skip non existing resourceDirectory C:\Users\ruimi\Documents\NetBeansProjects\erro_testes_unitarios\src\test\resources
--- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ erro_testes_unitarios ---
Nothing to compile - all classes are up to date
--- maven-surefire-plugin:2.12.4:test (default-cli) @ erro_testes_unitarios ---
Surefire report directory: C:\Users\ruimi\Documents\NetBeansProjects\erro_testes_unitarios\target\surefire-reports
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Exception in thread "main" java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:513)
at java.instrument/sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:525)
Caused by: java.lang.RuntimeException: Class java/util/UUID could not be instrumented.
at org.jacoco.agent.rt.internal_6da5971.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:140)
at org.jacoco.agent.rt.internal_6da5971.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:101)
at org.jacoco.agent.rt.internal_6da5971.PreMain.createRuntime(PreMain.java:55)
at org.jacoco.agent.rt.internal_6da5971.PreMain.premain(PreMain.java:47)
... 6 more
Caused by: java.lang.NoSuchFieldException: $jacocoAccess
at java.base/java.lang.Class.getField(Class.java:2013)
at org.jacoco.agent.rt.internal_6da5971.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:138)
... 9 more
*** java.lang.instrument ASSERTION FAILED ***: "result" with message agent load/premain call failed at JPLISAgent.c line: 422
FATAL ERROR in native method: processing of -javaagent failed, processJavaStart failed
Results :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
------------------------------------------------------------------------
BUILD FAILURE
------------------------------------------------------------------------
Total time: 2.899 s
Finished at: 2020-04-10T13:14:06+01:00
Final Memory: 11M/47M
------------------------------------------------------------------------
Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-cli) on project erro_testes_unitarios: Execution default-cli of goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test failed: The forked VM terminated without saying properly goodbye. VM crash or System.exit called ? -> [Help 1]
To see the full stack trace of the errors, re-run Maven with the -e switch.
Re-run Maven using the -X switch to enable full debug logging.
For more information about the errors and possible solutions, please read the following articles:
[Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
这是我的pom.xml文件:
<?xml version="1.0" encoding="UTF-8"?>
<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>com.mycompany</groupId>
<artifactId>erro_testes_unitarios</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.5.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId>
<version>5.5.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.5.2</version>
<scope>test</scope>
</dependency>
</dependencies>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>14</maven.compiler.source>
<maven.compiler.target>14</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.7.201606060606</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
您能帮我吗? 谢谢大家的光临!
答案 0 :(得分:6)
显然,您正在使用JDK 14作为开发和测试环境。您可以检查一下。转到Help -> About -> Java.
集成Maven,Maven中的所有插件都使用NetBeans用作执行环境的JDK版本。
Jacoco仅在0.8.5 version中添加了对JDK 14的实验支持:
- JaCoCo现在正式支持Java 13
- 对 Java 14 类文件的实验支持(GitHub#897)。
- 由Kotlin编译器为具有默认参数的开放函数添加的分支在生成报告时被滤除(GitHub#887)。
您可以将插件版本更改为0.8.5:
...
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.5</version>
...
0.7.7版本支持JDK 8或更早版本。因此,如果要使用插件的0.7.7版本,可以使用JDK8。有关为NetBeans设置JDK版本的信息,请参见question。同样,在JDK 8中,您应该将maven.compiler.source和maven.compiler.target更改为1.8