使用Jakarta 10.0.0构建RESTful客户端遇ClientBuilder Provider缺失问题
问题原因与修复方案
问题原因
你添加的jakarta.jakartaee-api只是Jakarta EE的API规范包,里面只有接口和注解定义,没有任何可执行的实现代码。ClientBuilder是JAX-RS(Jakarta RESTful Web Services)的客户端入口类,运行时必须依赖具体的实现库才能创建实例,所以才会抛出ClassNotFoundException找不到提供者的异常。
修复方案:添加JAX-RS客户端实现依赖
你需要引入一个符合Jakarta EE 10规范的JAX-RS客户端实现,常用的有两种选择,二选一即可:
选项1:使用Eclipse Jersey(Jakarta EE官方推荐实现)
修改pom.xml,替换原有的API依赖为Jersey的客户端相关依赖(如果需要JSON解析,记得加上JSON处理包):
<dependencies> <!-- Jersey JAX-RS客户端核心实现 --> <dependency> <groupId>org.glassfish.jersey.core</groupId> <artifactId>jersey-client</artifactId> <version>3.1.5</version> </dependency> <!-- 支持JSON响应解析 --> <dependency> <groupId>org.glassfish.jersey.media</groupId> <artifactId>jersey-media-json-binding</artifactId> <version>3.1.5</version> </dependency> </dependencies>
选项2:使用RESTEasy(RedHat出品的JAX-RS实现)
如果更习惯RESTEasy,添加以下依赖:
<dependencies> <!-- RESTEasy JAX-RS客户端核心实现 --> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-client</artifactId> <version>6.2.7.Final</version> </dependency> <!-- 支持JSON响应解析 --> <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-json-binding-provider</artifactId> <version>6.2.7.Final</version> </dependency> </dependencies>
验证操作
- 执行
mvn clean install重新构建项目 - 运行
CompanyWebClient主类,此时ClientBuilder.newClient()应该能正常创建客户端实例,成功调用REST接口
注:版本号可根据最新稳定版调整,需确保版本与Jakarta EE 10兼容(Jersey 3.x、RESTEasy 6.x均适配Jakarta EE 10)
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

