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

升级Quarkus至3.14.4后构建原生镜像时出现类找不到错误

Quarkus 3.14.4原生镜像构建报错:io.opentelemetry.sdk.internal.AndroidFriendlyRandomHolder类找不到

问题场景

将正常运行的Quarkus应用从3.12.1升级到3.14.4后,在Mac上执行以下命令构建原生容器镜像时:

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

出现如下错误:

java.lang.ClassNotFoundException: io.opentelemetry.sdk.internal.AndroidFriendlyRandomHolder
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageClassLoader.loadClass(NativeImageClassLoader.java:637)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:526)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:534)
at java.base/java.lang.Class.forName(Class.java:513)
at io.quarkus.runner.Feature.runtimeReinitializedClasses(Unknown Source)
at io.quarkus.runner.Feature.beforeAnalysis(Unknown Source)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$9(NativeImageGenerator.java:773)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:90)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:773)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:592)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:550)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:539)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:721)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.start(NativeImageGeneratorRunner.java:143)
at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:98)

降级回3.12.1后错误消失,再次升级到3.14.4则错误重现。

问题原因

该问题是Quarkus 3.14.4版本中OpenTelemetry SDK集成的兼容性问题:Quarkus 3.14.x升级了OpenTelemetry依赖版本,对应的GraalVM原生镜像构建配置未及时适配,导致AndroidFriendlyRandomHolder类未被正确包含到原生镜像中。已有其他用户反馈过此问题。

解决方案

方案1:升级到Quarkus 3.14.5或更高版本

Quarkus官方在后续小版本中修复了这个OpenTelemetry集成的bug,升级到3.14.5及以上版本即可解决问题,无需额外配置。

方案2:添加GraalVM原生构建参数

如果暂时无法升级Quarkus版本,可以通过配置强制让原生镜像包含缺失的类:
在pom.xml的<properties>节点中添加:

<quarkus.native.additional-build-args>--initialize-at-run-time=io.opentelemetry.sdk.internal.AndroidFriendlyRandomHolder</quarkus.native.additional-build-args>

若为反射访问问题,在src/main/resources/META-INF/native-image/reflect-config.json中添加反射配置:

[
  {
    "name": "io.opentelemetry.sdk.internal.AndroidFriendlyRandomHolder",
    "allDeclaredConstructors": true,
    "allPublicConstructors": true,
    "allDeclaredMethods": true,
    "allPublicMethods": true,
    "allDeclaredFields": true,
    "allPublicFields": true
  }
]

方案3:排除OpenTelemetry扩展(如果应用不需要)

如果应用不依赖OpenTelemetry功能,可在pom.xml中排除相关依赖:

<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-resteasy-reactive</artifactId>
  <exclusions>
    <exclusion>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-opentelemetry</artifactId>
    </exclusion>
  </exclusions>
</dependency>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 01:04:56