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

Quarkus原生构建遇Vert.x Redis Client Random/SplittableRandom异常求助

Quarkus原生构建Vert.x Redis Client遇UnsupportedFeatureException的解决方法

问题背景

在Quarkus应用原生构建过程中,使用Docker容器构建命令 ./mvnw package -Dnative -Dquarkus.native.container-build=true 时,Vert.x Redis Client多个类触发UnsupportedFeatureException: Detected an instance of Random/SplittableRandom异常。已通过pom.xml配置<quarkus.native.additional-build-args>将io.vertx.redis.client.impl.RedisSentinelClient设为运行时初始化,解决了部分异常,但仍卡在io.vertx.redis.client.impl.RedisClusterConnection.send(io.vertx.redis.client.Request)的解析错误上,尝试添加RedisClusterConnection、BaseRedisClient等类的运行时初始化配置后问题依旧。

核心原因

GraalVM原生构建会在构建阶段提前初始化部分类,而Random/SplittableRandom需要依赖运行时环境的熵源,无法在构建阶段完成初始化,因此需要将包含此类初始化逻辑的类指定为运行时初始化。

具体配置

由于RedisClusterConnection是接口,实际运行时的实例是其实现类io.vertx.redis.client.impl.RedisClusterConnectionImpl,需将该类添加到运行时初始化列表中:

修改pom.xml中的<quarkus.native.additional-build-args>配置:

<quarkus.native.additional-build-args>
  --initialize-at-run-time=io.vertx.redis.client.impl.RedisSentinelClient,io.vertx.redis.client.impl.RedisClusterConnectionImpl
</quarkus.native.additional-build-args>

如果上述配置仍未解决问题,可以尝试将整个Vert.x Redis Client的内部实现包设为运行时初始化(适合快速排查,后续可根据异常栈缩小范围):

<quarkus.native.additional-build-args>
  --initialize-at-run-time=io.vertx.redis.client.impl
</quarkus.native.additional-build-args>

验证

修改配置后,重新执行原生构建命令:

./mvnw package -Dnative -Dquarkus.native.container-build=true

进阶排查

若问题仍存在,查看完整异常栈信息,找到明确触发Random/SplittableRandom初始化的具体类,将其添加到--initialize-at-run-time参数中即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 09:35:22