【问题标题】:Mockito shipped within Spring Boot fails to attach to JVM (OpenJDK 11)Spring Boot 中附带的 Mockito 无法附加到 JVM (OpenJDK 11)
【发布时间】: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:+StartAttachListener here
  • 重启电脑
  • 确保防火墙允许java 进程按照here 接收传入连接
  • (暂时)停止任何可能阻止连接发生的安全软件
  • 查看JAVA_HOME 和我机器上的不同Java 安装,以防进程尝试按照here 附加到错误的Java

如果重要的话,这是在 MBP M1 上。团队的其他成员可以毫无问题地进行构建。

【问题讨论】:

    标签: java spring-boot macos mockito


    【解决方案1】:

    不确定这将是一个多大的答案,但问题现在(似乎)已经自我修复......我将描述我所做的以及发生了什么,以防它帮助其他用户遇到类似问题。

    在尝试了问题中描述的所有方法均未成功后,我不得不(再次)重新启动笔记本电脑以解决不相关的问题(Zoom 无法启动)。重新启动后,笔记本电脑只是崩溃并自行重新启动。然后它第二次做了同样的事情。在第三次自动重启后,我在构建 Java 应用程序时不再遇到问题。

    我的猜测是 NVRAM 以某种方式损坏,这影响了 JVM 接受传入的附件请求的能力。在 MBP M1 上,无法像 Intel 型号那样重置 NVRAM(按 Cmd + Opt + R + P),而是在检测到错误时the NVRAM is supposed to self-heal。我想在 MBP 崩溃后最终决定修复 NVRAM,这就是构建重新开始工作的原因。

    更新:我现在又遇到了几次这个问题,每次“解决方案”都是重新启动笔记本电脑几次,直到它崩溃。之后问题就会消失。这增加了问题中指定的硬件和软件组合存在一些固有的不稳定性的想法。如果其他人有同样的问题,我会将其保留为“已回答”的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-24
      • 2021-11-12
      • 2018-09-20
      • 2016-10-01
      • 2014-08-07
      • 2019-02-11
      • 2020-09-29
      • 1970-01-01
      相关资源
      最近更新 更多