问题描述
我使用 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。