Java 17 - java.lang.NoClassDefFoundError:javax/xml/bind/annotation/XmlElement

问题描述 投票:0回答:1

我有一个 Java17 的 gradle 项目,在运行测试时出现以下错误:

java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlElement

这就是测试的样子:

public class SettingsServiceTest extends AbstractIntegrationTest {
@Autowired
private SettingsService settingsService;


@Test
void shouldReturnMandatorySetting() {
    wireMockGetConfig();
 
    String res = settingsService.getMandatorySetting();
    Assertions.assertEquals(res, "setting");
}

wiremockGetConfig
方法:

 protected void wireMockGetConfig() {
    givenThat(get(urlPathEqualTo("/settings/appid"))
            .willReturn(aResponse()
                    .withHeader(CONTENT_TYPE, APPLICATION_JSON_VALUE)
                    .withBody(readResource(SETTINGS_JSON_FILE))
                    .withStatus((Response.SC_OK))));
}

正如你所看到的,我试图嘲笑客户的反应。响应将是一个 json 文件。 我已经多次使用这种模式并且它总是工作得很好。最近,我们将应用程序迁移到 Java17,在查看了这个旧线程之后,我开始认为我需要配置一些东西。我在代码中没有引用 javax(我们已经迁移到 Java17)。

我已经尝试添加上述线程接受的答案中提到的依赖项:

implementation "jakarta.xml.bind:jakarta.xml.bind-api:2.3.2"
implementation "org.glassfish.jaxb:jaxb-runtime:2.3.2"

没有任何改变/成功。 我也尝试过使用 4.0.0 版本,没有区别。

java testing jaxb java-17 jakarta-migration
1个回答
0
投票

还有另一个依赖项正在拉起 javax 模块。重构依赖关系解决了问题

© www.soinside.com 2019 - 2024. All rights reserved.