【发布时间】:2021-12-23 23:51:16
【问题描述】:
我有一堆使用 Mockito 进行单元测试的 Spring Boot 2.5.6 应用程序。使用的 Mockito 版本是 SB 本身附带的版本 (3.9.0)。 JDK 是 OpenJDK 11.0.12+0。直到昨天一切正常,今天早上我突然无法运行任何基于 Mockito 的测试,所有测试都失败了:
Caused by: java.lang.IllegalStateException: Failed to load interface org.mockito.plugins.MockMaker implementation declared in java.lang.CompoundEnumeration@7c51f34b
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 : 11
JVM vendor name : Homebrew
JVM vendor version : 11.0.12+0
JVM name : OpenJDK 64-Bit Server VM
JVM version : 11.0.12+0
JVM info : mixed mode
OS name : Mac OS X
OS version : 12.0.1
Caused by: java.lang.IllegalStateException: Could not self-attach to current VM using external process
我无法识别昨天和今天之间发生的任何变化。
我尝试过的事情都没有成功:
- 使用 Java 17 重新运行。
- 重新安装 Java 11。
- 安装来自不同供应商的 JDK 11 (Microsoft OpenJDK)
- 将
-Djdk.attach.allowAttachSelf=true添加到命令行和surefire 配置中的<argLine>参数,如建议的here - 按照建议添加
-XX:+StartAttachListenerhere - 重启电脑
- 确保防火墙允许
java进程按照here 接收传入连接 - (暂时)停止任何可能阻止连接发生的安全软件
- 查看
JAVA_HOME和我机器上的不同Java 安装,以防进程尝试按照here 附加到错误的Java
如果重要的话,这是在 MBP M1 上。团队的其他成员可以毫无问题地进行构建。
【问题讨论】:
标签: java spring-boot macos mockito