我如何使用 JUnit 5 解决这个 ASM 问题

问题描述

我使用 GWT 2.9 和 JUnit 4,但我正在考虑使用 junit-vintage-engine 增加到 5。

然而,gwt 2.9 对 ASM 7 有要求,但对于 Junit 4,这不是问题。所以我尝试将我的 jUnit 依赖项更改为

<groupId>org.junit.vintage</groupId
<artifactId>junit-vintage-engine</artifactId>
<version>5.7.1</version>

现在,在 Intellij 中尝试启动 Jetty 后,我得到:

java.lang.RuntimeException:从 jar 文件扫描入口模块信息.class 时出错:junit-vintage-engine-5.7.1.jar 引起:java.lang.UnsupportedOperationException:此功能需要ASM6

我看不出 junit Vintage 在何处依赖 ASM6,所以我不确定出了什么问题。有没有办法让我解决这个问题?指针表示赞赏。

解决方法

免责声明:我以前从未使用过 Jetty 或 GWT,只是环顾四周,因为我对您的问题很好奇。

GWT-Dev 2.9.0 有一个 Jetty 9.2.14 dependency

根据 this source,升级到 Jetty 9.4.8+ 似乎有助于在尝试扫描多版本 JAR 中的模块信息类以获取注释时解决 JDK 9+ 问题:

查看 parent POM 时,...

<properties>
  <jetty.version>9.2.14.v20151106</jetty.version>
  <asm.version>7.1</asm.version>
</properties>

...也许只需覆盖 POM 中的 jetty.version 属性就足够了。如果这还不够,您可能仍会尝试将 Jetty 工件依赖管理到 9.4.40.v20210413、10.0.2、11.0.2 或任何您认为合适且与 GWT 兼容的 API。