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

Quarkus中@RegisterRestClient不识别及方法可见性问题

问题解决方案

核心问题1:Rest Client必须定义为接口

MicroProfile Rest Client规范要求客户端必须是接口而非类,你当前将OffersRestClientService定义为class,这是@RegisterRestClient不被识别的根本原因。修改代码将class改为interface:

package org.offerService.infrastructure;

import java.util.concurrent.CompletionStage;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import org.LeadsService.contract.offerDto.OfferDto;
import org.LeadsService.contract.reponseType.responseTypeOffer.ResponseCreateOffer;
import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;

@Path("/offer")
@RegisterRestClient(configKey = "offer-api")
public interface OffersRestClientService { // 改为interface

    @POST
    @Path("/createOffer")
    CompletionStage<ResponseCreateOffer> createOffer(OfferDto offer);
}

核心问题2:方法访问权限不足

createOffer方法未指定访问修饰符,默认是包级访问权限,跨包注入调用时会触发「方法不可见」错误。给方法添加public修饰符:

@POST
@Path("/createOffer")
public CompletionStage<ResponseCreateOffer> createOffer(OfferDto offer); // 增加public

额外修正项

  • 包名大小写统一:警告中出现的org.OfferService与代码里的org.offerService大小写不一致,确保注入时引用的类名、包名完全匹配,避免大小写导致的类查找失败。
  • 补全配置URL协议头:application.properties中的服务地址需添加http://,否则Quarkus无法正确解析:

quarkus.rest-client.offer-api.url=http://localhost:8082

  • 正确注入客户端:注入时需同时使用@Inject和@RestClient注解:
@Inject
@RestClient
OffersRestClientService offerRestClient;

完成上述修改后重新编译运行,警告和错误即可消除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 14:52:17