来自 jacoco 的 java.lang.NoSuchFieldException 错误

Emi*_*dde 10 java kotlin gradlew ipfs

我正在尝试运行从这里提供的 kotlin 代码的测试:https : //github.com/ligi/ipfs-api-kotlin with gradlew

我收到下面列出的错误。有人能告诉我这个错误是什么意思吗?

> Task :test FAILED
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)
FATAL ERROR in native method: processing of -javaagent failed, processJavaStart failed
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:566)
        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/lang/UnknownError could not be instrumented.
        at org.jacoco.agent.rt.internal_c13123e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:140)
        at org.jacoco.agent.rt.internal_c13123e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:101)
        at org.jacoco.agent.rt.internal_c13123e.PreMain.createRuntime(PreMain.java:55)
        at org.jacoco.agent.rt.internal_c13123e.PreMain.premain(PreMain.java:47)
        ... 6 more
Caused by: java.lang.NoSuchFieldException: $jacocoAccess
        at java.base/java.lang.Class.getField(Class.java:1999)
        at org.jacoco.agent.rt.internal_c13123e.core.runtime.ModifiedSystemClassRuntime.createFor(ModifiedSystemClassRuntime.java:138)
        ... 9 more
*** java.lang.instrument ASSERTION FAILED ***: "result" with message agent load/premain call failed at  line: 422

Run Code Online (Sandbox Code Playgroud)

tsc*_*ann 8

我在 build.gradle 中遗漏了以下内容:

jacoco {
    toolVersion = "0.8.6"
}
Run Code Online (Sandbox Code Playgroud)

虽然很明显,但 build.gradle 可以从其他 gradle 文件继承属性,并且由于我无法弄清楚的原因,jacoco它传递到一个子项目而不是另一个子项目。


jmo*_*ico 7

修复了此错误,将我的项目中的 Java SDK 从 14 更改为 11,并且我的测试开始正常工作。

解决方案:IntellijIDEA:文件>项目结构>项目选项卡> SDK采用-opendjdk-11(在我的情况下是Ubuntu)。

哦!确保 Gradle 设置也使用相同的 JVM! 在此输入图像描述 在此输入图像描述

希望能帮助那里的人。


Jim*_*mes 7

确保您使用的是JDK-11,如果使用maven,请确保;

<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
Run Code Online (Sandbox Code Playgroud)

确保您使用的是最新的 jacoco。

        <groupId>org.jacoco</groupId>
        <artifactId>jacoco-maven-plugin</artifactId>
        <version>0.8.4</version>
Run Code Online (Sandbox Code Playgroud)


Emi*_*dde 1

该问题来自 Java 版本,该版本不需要太新。

sdk安装java 19.3.0.2.r8-grl

让事情顺利。