You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java项目迁Java11后测试遇Jakarta类ClassNotFoundException问题

问题原因与修复方案

问题原因

没错,就是测试运行时缺少JAX-RS的实际实现库导致的。jakarta.ws.rs:jakarta.ws.rs-api只是Jakarta RESTful Web Services的规范API包,仅包含接口、抽象类和注解,没有具体的业务逻辑实现。运行时必须依赖一个符合该规范的实现库,才能找到ClientBuilder的具体提供者(Provider)。

简便修复方法

只需在测试依赖中添加任意一个兼容Jakarta REST 3.x的实现库即可,以下是两种常用选项:

选项1:使用RESTEasy实现

适用于Gradle项目,添加到build.gradle:

testImplementation 'org.jboss.resteasy:resteasy-client:6.2.7.Final'

适用于Maven项目,添加到pom.xml:

<dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-client</artifactId>
    <version>6.2.7.Final</version>
    <scope>test</scope>
</dependency>

RESTEasy 6.x系列完全兼容Jakarta REST 3.1规范,能自动注册ClientBuilder的提供者。

选项2:使用Jersey实现

适用于Gradle项目:

testImplementation 'org.glassfish.jersey.core:jersey-client:3.1.5'

适用于Maven项目:

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>3.1.5</version>
    <scope>test</scope>
</dependency>

Jersey 3.x是Eclipse官方的JAX-RS实现,同样支持Jakarta REST 3.x规范。

添加依赖后,测试运行时会自动加载对应实现的Provider,ClientBuilder.newBuilder()就能正常实例化了。

内容的提问来源于stack exchange,提问作者Undoht

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 16:14:55