Mockito 无法模拟此类 - 原因:NoClassDefFoundError: sun/misc/ObjectInputFilter$FilterInfo

问题描述 投票:0回答:0

使用 OpenJdk-11、Mockito-3.12.4 和 powermock-2.0.9 执行 JUnit 时出现以下错误。另外,我正在使用由 Java 1.8 编译的第三方库 (pcm.jar)。

错误是-

shouldReturnSecondaryDataServiceMapFromFList(com.xxxxx.SecondaryDataServiceMapTest)  Time elapsed: 0.301 sec  <<< FAILURE!
org.mockito.exceptions.base.MockitoException:
Mockito cannot mock this class: class com.portal.pcm.FList.
If you're not sure why you're getting this error, please report to the mailing list.
Java               : 11
JVM vendor name    : Red Hat, Inc.
JVM vendor version : 11.0.15+9-LTS
JVM name           : OpenJDK 64-Bit Server VM
JVM version        : 11.0.15+9-LTS
JVM info           : mixed mode
OS name            : Windows 10
OS version         : 10.0
You are seeing this disclaimer because Mockito is configured to create inlined mocks.
You can learn about inline mocks and their limitations under item #39 of the Mockito class javadoc.
Underlying exception : org.mockito.exceptions.base.MockitoException: Could not modify all classes [class java.util.Hashtable, class com.portal.pcm.FList, interface java.io.Externalizable, class java.util.Dictionary]
      at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
      at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3166)
      at java.base/java.lang.Class.getDeclaredMethods(Class.java:2309)
      at net.bytebuddy.description.method.MethodList$ForLoadedMethods.<init>(MethodList.java:148)
      at net.bytebuddy.description.type.TypeDescription$ForLoadedType.getDeclaredMethods(TypeDescription.java:8655)
      at net.bytebuddy.dynamic.scaffold.InstrumentedType$Factory$Default$1.represent(InstrumentedType.java:421)
      at net.bytebuddy.ByteBuddy.redefine(ByteBuddy.java:782)
      at net.bytebuddy.ByteBuddy.redefine(ByteBuddy.java:757)
      at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.transform(InlineBytecodeGenerator.java:381)
      at java.instrument/java.lang.instrument.ClassFileTransformer.transform(ClassFileTransformer.java:246)
      at java.instrument/sun.instrument.TransformerManager.transform(TransformerManager.java:188)
      at java.instrument/sun.instrument.InstrumentationImpl.transform(InstrumentationImpl.java:563)
      at java.instrument/sun.instrument.InstrumentationImpl.retransformClasses0(Native Method)
      at java.instrument/sun.instrument.InstrumentationImpl.retransformClasses(InstrumentationImpl.java:167)
      at org.mockito.internal.creation.bytebuddy.InlineBytecodeGenerator.triggerRetransformation(InlineBytecodeGenerator.java:276)
      ... 50 more
Caused by: java.lang.ClassNotFoundException: sun.misc.ObjectInputFilter$FilterInfo
      at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
      at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
      at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
      ... 65 more

sun.misc.* 已弃用。哪个罐子指的是这个类?是 mockito 还是 pcm.jar?

我需要为 sun.misc.ObjectInputFilter 添加或排除什么依赖项?

mockito java-11 java-9
© www.soinside.com 2019 - 2024. All rights reserved.