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

Spring Boot 4.0.0-M1构建GraalVM原生镜像时遭遇OkHttpGrpcSender类初始化失败的NoClassDefFoundError问题求助

Spring Boot 4.0.0-M1构建GraalVM原生镜像时遭遇OkHttpGrpcSender类初始化失败的NoClassDefFoundError问题求助

大家好,我最近在尝试用刚发布的Spring Boot 4.0.0-M1结合GraalVM AOT构建原生镜像时遇到了棘手的问题,想请教各位帮忙看看。在Spring Boot 3.5.3版本中,相同的代码可以正常编译和运行,但升级到4.0.0-M1后就一直出现NoClassDefFoundError错误。我知道Spring Boot 4.0做了模块化改造,所以想搞清楚这个缺失的类属于哪个模块,以及如何修复这个原生镜像构建的问题。

我的配置类代码

@Configuration
public class TracingConfiguration {
    @Bean
    public SpanExporter otlpGrpcSpanExporter() {
        return OtlpGrpcSpanExporter.builder()
                .setEndpoint("https://otlp-gateway-prod-us-central-0.grafana.net/otlp/v1/traces")
                .addHeader("Authorization", "Basic ODY2MTg0OaWRYTWlmWDA9") // 这是测试用的假凭证
                .build();
    }
}

Maven依赖配置

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-kafka</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-opentelemetry</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-webclient</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    <dependency>
        <groupId>io.projectreactor</groupId>
        <artifactId>reactor-core-micrometer</artifactId>
    </dependency>
    <dependency>
        <groupId>io.opentelemetry</groupId>
        <artifactId>opentelemetry-exporter-otlp</artifactId>
    </dependency>
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-tracing-bridge-otel</artifactId>
    </dependency>
    <dependency>
        <groupId>io.micrometer</groupId>
        <artifactId>micrometer-registry-otlp</artifactId>
    </dependency>
    <dependency>
        <groupId>io.projectreactor.kafka</groupId>
        <artifactId>reactor-kafka</artifactId>
        <version>1.3.23</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-function-context</artifactId>
        <version>4.3.0</version>
    </dependency>
    <dependency>
        <groupId>com.github.loki4j</groupId>
        <artifactId>loki-logback-appender</artifactId>
        <version>2.0.0</version>
    </dependency>
    <!-- 
    <dependency>
        <groupId>io.opentelemetry</groupId>
        <artifactId>opentelemetry-exporter-sender-okhttp</artifactId>
        <version>1.52.0</version>
    </dependency>
    -->
</dependencies>

我使用的构建命令

mvn -U -Pnative spring-boot:build-image -DskipTests

报错信息

Caused by: java.lang.NoClassDefFoundError: Could not initialize class io.opentelemetry.exporter.sender.okhttp.internal.OkHttpGrpcSender
    at io.opentelemetry.exporter.sender.okhttp.internal.OkHttpGrpcSenderProvider.createSender(OkHttpGrpcSenderProvider.java:23)
    at io.opentelemetry.exporter.internal.grpc.GrpcExporterBuilder.build(GrpcExporterBuilder.java:236)
    at io.opentelemetry.exporter.otlp.trace.OtlpGrpcSpanExporterBuilder.build(OtlpGrpcSpanExporterBuilder.java:310)
    at org.example.TracingConfiguration.otlpGrpcSpanExporter(TracingConfiguration.java:25)

我的疑问

  • OkHttpGrpcSender这个类属于哪个模块?
  • 我需要调整哪些配置或者依赖,才能让Spring Boot 4.0.0-M1成功构建GraalVM原生镜像?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 13:08:07