Java异常-Could not initialize plugin: interface org.mockito.plugins.MockMaker

35 篇文章 1 订阅
20 篇文章 0 订阅

跑单元测试,报如下错误:

 

java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)

    at org.mockito.internal.configuration.plugins.PluginLoader$1.invoke(PluginLoader.java:84)
    at com.sun.proxy.$Proxy10.isTypeMockable(Unknown Source)
    at org.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:33)
    at org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22)
    at org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:250)
    at org.mockito.internal.creation.MockSettingsImpl.build(MockSettingsImpl.java:232)
    at org.mockito.internal.MockitoCore.mock(MockitoCore.java:61)
    at org.mockito.Mockito.mock(Mockito.java:1951)
    at org.mockito.internal.configuration.MockAnnotationProcessor.processAnnotationForMock(MockAnnotationProcessor.java:66)
    at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:27)
    at org.mockito.internal.configuration.MockAnnotationProcessor.process(MockAnnotationProcessor.java:24)
    at org.mockito.internal.configuration.IndependentAnnotationEngine.createMockFor(IndependentAnnotationEngine.java:46)
    at org.mockito.internal.configuration.IndependentAnnotationEngine.process(IndependentAnnotationEngine.java:73)
    at org.mockito.internal.configuration.InjectingAnnotationEngine.processIndependentAnnotations(InjectingAnnotationEngine.java:73)
    at org.mockito.internal.configuration.InjectingAnnotationEngine.process(InjectingAnnotationEngine.java:47)
    at org.mockito.MockitoAnnotations.openMocks(MockitoAnnotations.java:82)
    at org.mockito.internal.runners.DefaultInternalRunner$1$1.evaluate(DefaultInternalRunner.java:49)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
    at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
    at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
    at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
    at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
    at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
    at org.mockito.internal.runners.DefaultInternalRunner$1.run(DefaultInternalRunner.java:99)
    at org.mockito.internal.runners.DefaultInternalRunner.run(DefaultInternalRunner.java:105)
    at org.mockito.internal.runners.StrictRunner.run(StrictRunner.java:40)
    at org.mockito.junit.MockitoJUnitRunner.run(MockitoJUnitRunner.java:163)
    at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
    at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
    at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Caused by: java.lang.IllegalStateException: Failed to load interface org.mockito.plugins.MockMaker implementation declared in java.lang.CompoundEnumeration@68e5eea7
    at org.mockito.internal.configuration.plugins.PluginInitializer.loadImpl(PluginInitializer.java:57)
    at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:65)
    at org.mockito.internal.configuration.plugins.PluginLoader.loadPlugin(PluginLoader.java:50)
    at org.mockito.internal.configuration.plugins.PluginRegistry.<init>(PluginRegistry.java:19)
    at org.mockito.internal.configuration.plugins.Plugins.<clinit>(Plugins.java:16)
    at org.mockito.internal.runners.RunnerFactory$2.get(RunnerFactory.java:46)
    at org.mockito.internal.runners.RunnerFactory$2.get(RunnerFactory.java:44)
    at org.mockito.internal.runners.DefaultInternalRunner$1$1.evaluate(DefaultInternalRunner.java:46)
    ... 23 more
Caused by: java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at org.mockito.internal.configuration.plugins.PluginInitializer.loadImpl(PluginInitializer.java:52)
    ... 30 more
Caused by: org.mockito.exceptions.base.MockitoInitializationException: 
Could not initialize inline Byte Buddy mock maker.

It appears as if your JDK does not supply a working agent attachment mechanism.
Java               : 11
JVM vendor name    : Oracle Corporation
JVM vendor version : 11.0.9+7-LTS
JVM name           : Java HotSpot(TM) 64-Bit Server VM
JVM version        : 11.0.9+7-LTS
JVM info           : mixed mode
OS name            : Windows 10
OS version         : 10.0

    at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<init>(InlineByteBuddyMockMaker.java:234)
    ... 35 more
Caused by: java.lang.IllegalStateException: 
Mockito could not self-attach a Java agent to the current VM. This feature is required for inline mocking.
This error occured due to an I/O error during the creation of this agent: java.io.IOException: The system cannot find the path specified

Potentially, the current VM does not support the instrumentation API correctly
    at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<clinit>(InlineByteBuddyMockMaker.java:177)
    ... 35 more
Caused by: java.io.IOException: The system cannot find the path specified
    at java.base/java.io.WinNTFileSystem.createFileExclusively(Native Method)
    at java.base/java.io.File.createTempFile(File.java:2092)
    at java.base/java.io.File.createTempFile(File.java:2138)
    at org.mockito.internal.creation.bytebuddy.InlineByteBuddyMockMaker.<clinit>(InlineByteBuddyMockMaker.java:125)
    ... 35 more


Process finished with exit code -1

原因:POM文件里面有如下配置,该配置对应路径不存在,换一个存在的目录或者去除该配置即可。

注意:更改完POM文件后记得刷新。刷新方式如下:点击pom文件里面的刷新按钮(不刷新会发现没有效果)

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误提示是说无法初始化 Mockito 插件,具体是因为找不到 org.mockito.plugins.mockmaker 接口。可能是因为 Mockito 版本不兼容或者缺少必要的依赖库。需要检查代码和依赖库,确保版本和配置正确。 ### 回答2: 这是由于使用 Mockito 框架时,Mockito 找不到插件 org.mockito.plugins.mockmaker 导致的错误。这个插件在 Mockito 2.1.0 版本中被引入,并被用于创建 mock 对象,如果找不到该插件,则无法使用 Mockito 中的核心功能。 出现这个问题的原因可能是因为 Maven 或 Gradle 中没有正确配置 Mockito 的依赖关系,或者是因为使用了与 Mockito 不兼容的版本。为解决这个问题,可以尝试以下步骤: 1. 检查是否已经正确引入了 Mockito 的依赖,并且版本号正确。可以通过在 pom.xml 或 build.gradle 中添加下列依赖来引入 Mockito: ``` <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.23.4</version> <scope>test</scope> </dependency> ``` 2. 检查是否有其它库与 Mockito 的版本冲突。可以使用 Maven 或 Gradle 的依赖树查看所有的依赖关系,并且确认是否存在与 Mockito 不兼容的版本。可以在命令行中使用命令 mvn dependency:tree 或 gradle dependencies 进行检查。如果发现冲突,需要解决依赖冲突问题。 3. 如果以上两个步骤都没有解决这个问题,可以尝试手动安装插件。可以在 pom.xml 中添加以下依赖: ``` <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-inline</artifactId> <version>2.23.4</version> <scope>test</scope> </dependency> ``` 或者在 Gradle 中添加以下语句: ``` testImplementation 'org.mockito:mockito-inline:2.23.4' ``` 这个依赖包含了 org.mockito.plugins.mockmaker 包,应该能够解决问题。 总之,这个问题出现的原因可能是非常多样化的,需要根据具体情况进行排查和解决。最好的解决方案是保持依赖的一致性和兼容性,并且避免出现版本冲突和插件缺失等问题。 ### 回答3: 在使用Mockito进行单元测试时,可能会遇到“could not initialize plugin: interface org.mockito.plugins.mockmaker”的错误提示。该提示表示Mockito未能正确初始化指定的插件。具体的原因可能有以下几种情况: 1. 未添加所需的Mockito依赖。Mockito需要引入相关的依赖库,如mockito-core、mockito-extension等,如果没有添加这些依赖库就会导致无法加载插件。 2. 版本冲突。当使用的Mockito版本与其他依赖的库版本不兼容时,就可能会使用不同的Mockito插件导致初始化错误。 3. 系统配置问题。有时候可能是与操作系统或Java版本相关的配置问题,导致Mockito无法正确加载插件。 针对以上可能的原因,可以尝试以下解决方案: 1. 检查并添加所需的Mockito依赖库,确保引入的所有版本都相互兼容。 2. 确保Mockito版本与其他依赖库版本兼容,选择适合当前项目的Mockito版本。 3. 检查并调整系统配置,确保Java版本、环境变量等都正确设置。 4. 尝试手动注册指定的Mockito插件,如果找到了插件实现类,可以使用MockitoPlugins类手动注册。 总之,解决“could not initialize plugin: interface org.mockito.plugins.mockmaker”错误,需要仔细检查Mockito依赖、版本、环境配置等相关因素,并采取适当的措施进行处理。只要排查出了错误的原因,往往就可以很容易地解决该问题。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值