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
相关产品推荐
相关产品推荐

