【问题标题】:Mockito on JDK16 and Mac OS - Could not initialize pluginJDK16 和 Mac OS 上的 Mockito - 无法初始化插件
【发布时间】:2021-07-31 14:06:54
【问题描述】:
java.lang.IllegalStateException: Could not initialize plugin: interface org.mockito.plugins.MockMaker (alternate: null)
Caused by: java.lang.IllegalStateException: Failed to load interface org.mockito.plugins.MockMaker implementation declared in java.lang.CompoundEnumeration@4158debd
Caused by: java.lang.reflect.InvocationTargetException
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               : 16
    JVM vendor name    : Oracle Corporation
    JVM vendor version : 16.0.2+7-67
    JVM name           : Java HotSpot(TM) 64-Bit Server VM
    JVM version        : 16.0.2+7-67
    JVM info           : mixed mode, sharing
    OS name            : Mac OS X
    OS version         : 11.5
    
    Caused by: java.lang.IllegalStateException: Could not self-attach to current VM using external process

在使用 Mockito 3.7.7 的 Maven 3.8.1 和 JDK16.02 上出现上述错误,在全新的设置中,无法弄清楚原因。我已经尝试了从 3.7 到 3.11 的每个 Mockito 版本,但无济于事。

但是,这些配置适用于 Windows 10 Pro 上基于 JDK15 的旧设置。

【问题讨论】:

  • 你能提供一个最小的、可重现的例子吗?
  • 有没有mockitomaker相关的错误
  • 你是说Mockmaker?这是上面输出的第一行。 java.lang.IllegalStateException: 无法初始化插件:接口 org.mockito.plugins.MockMaker (alternate: null)
  • 是的,后来我注意到了

标签: java mockito maven-3


【解决方案1】:
  • Mockito 核心依赖于一个名为 byte-buddy 的库,这个问题主要发生在 mockito 找不到匹配的 byte buddy jar 版本时。

  • 找出您的项目正在使用的 mockito 核心版本。在 Eclipse 中,您可以通过导航到 右键单击项目 -> 属性 -> Java 构建路径 -> 库选项卡

  • 在 maven 存储库中搜索该版本的 mockito 核心。

  • 查看编译依赖部分。记下 byte-buddy 的正确依赖版本并包含在项目中。如果 jar 已包含在某个其他版本中,请使用此正确版本覆盖该版本。

构建应用程序并再次运行测试。您与 MockMaker 相关的问题现在必须解决。

【讨论】:

  • 谢谢,我已经尝试过了,将这些依赖项添加到我的 pom.xml 并确保它们位于 IntelliJ 的外部库中。不过还是不行。
  • 更改后尝试更新并重新启动项目?
  • 刚刚尝试删除所有缓存,并重新启动项目但没有继续...
【解决方案2】:

就我而言,我使用的是旧的 1.8 JDK。在撰写本文时,具有以下依赖项,它必须是 Java 11。

testImplementation(platform('org.junit:junit-bom:5.8.2'))
testImplementation('org.junit.jupiter:junit-jupiter')
testImplementation group: 'org.mockito', name: 'mockito-junit-jupiter', version: '4.2.0'
testImplementation group: 'org.mockito', name: 'mockito-inline', version: '4.2.0'
testRuntime('org.junit.jupiter:junit-jupiter-engine:5.8.2')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-02
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 2010-12-06
    相关资源
    最近更新 更多