将自定义Keycloak认证器迁移到Quarkus:Jakarta REST ClientBuilder实现问题
Keycloak Quarkus版本自定义认证器迁移:ClientBuilder找不到Provider的问题
我正在将基于Java EE及JAX-RS的自定义Keycloak认证器迁移至Quarkus版本的Keycloak。已经完成所有javax*包到jakarta*的替换,适配了Jakarta EE及Jakarta RESTful Web Services的API变更,大部分迁移工作已完成。
但在执行获取Keycloak访问令牌的代码时出现错误,相关代码如下:
Client client = ClientBuilder.newClient();
抛出的错误信息为:
Uncaught server error: java.lang.RuntimeException: java.lang.ClassNotFoundException: Provider for jakarta.ws.rs.client.ClientBuilder cannot be found
我清楚Jakarta RESTful Web Services只是规范,ClientBuilder需要具体的实现类支持。目前常见的实现包括Jersey、RESTEasy Classic、Quarkus REST(原RESTEasy Reactive)等。根据Quarkus官方说明,2.8版本之前默认使用RESTEasy Classic,2.8版本起默认改为Quarkus REST。
当前我使用的Keycloak 24.0.4基于Quarkus 3.8.4,而io.quarkus:quarkus-rest*系列包的最低版本为3.9.x,因此我推测应该使用RESTEasy Reactive而非Quarkus REST,但始终找不到提供ClientBuilder实现的对应Maven包。
我的上述推理是否正确?请指出适配Jakarta REST的ClientBuilder实现对应的Maven包及相关Javadoc文档。
内容的提问来源于stack exchange,提问作者niklassc
相关产品推荐
相关产品推荐

