kotlin - 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 类是编译时常量。如何得到它?
解决方案
应该使用简单的:
@RegisterProvider(MyExceptionMapper::class)
推荐阅读
- python - 如何将(A,)和(B,C,D)形状重塑为单个(A,B,C,D)?
- python - 使用 pandas 读取一次并保持许多 csv 文件打开或每次读取和关闭
- node.js - re2 模块针对不同的 Node.js 版本编译
- php - Symfony 5 Embed Collection - 原型表单未持久化
- aeron - Aeron 可以提供哪些类型的消息传递保证?
- visual-studio - 无法在 vscode 中编辑 settings.json,它显示为 GUI,需要在其中集成 git bash
- python - 为什么使用 .join 连接字符串比使用 Python 中的 + 操作更快
- excel - Excel VBA 求解器错误(特别是整数约束)
- shell - 在浏览器上Shell访问VPS
- aeron - Aeron 会丢失消息吗?