首页 > 解决方案 > Quarkus/Kotlin:注解参数必须是带有 java 类的编译时常量

问题描述

在 quarkus/kotlin 应用程序中,我有一个非常基本的休息客户端:

@Path("/my/api/v1")
@RestClient
interface MyApiClient { }

问题是,当请求失败时,它会返回一个无法映射的响应。所以我想添加一个异常映射器,以记录真正的错误:

class MyExceptionMapper : ResponseExceptionMapper<java.lang.RuntimeException?> {
    override fun toThrowable(r: Response): java.lang.RuntimeException {
        Logger.getLogger(MyApiClient::class.java).error(r.status)
        return RuntimeException("failed")
    }
}

为此,我应该对我的客户进行注释:

@RegisterProvider(MyExceptionMapper::class.java)

这样做,我有一个 kotlin 错误:

注释参数必须是编译时常量

我用谷歌搜索,但只能找到字符串的解决方案。在这种情况下,kotlin 期望 java 类是编译时常量。如何得到它?

标签: kotlinquarkusquarkus-rest-client

解决方案


应该使用简单的:

@RegisterProvider(MyExceptionMapper::class)

推荐阅读