java.lang.NoSuchFieldException error from jacoco

2022-09-04 07:19:35

我正在尝试运行从这里提供的kotlin代码的测试:https://github.com/ligi/ipfs-api-kotlin 与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


答案 1

我从build.gradle中缺少以下内容:

jacoco {
    toolVersion = "0.8.6"
}

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


答案 2

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

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

哦!确保 Gradle Settings 也使用相同的 JVM!enter image description here enter image description here

希望能帮助外面的人。


推荐