添加Azure Spring AD依赖触发OpenTelemetry相关NoClassDefFoundError求助
问题原因分析
这个错误的核心是依赖版本不兼容,具体拆解如下:
spring-cloud-azure-starter-active-directory:4.3.0内部依赖的OpenTelemetry版本高于你当前使用的1.19.0。io.opentelemetry.javaagent.instrumentation.internal.classloader.BootDelegationInstrumentation$Holder是OpenTelemetry高版本才新增的Java Agent内部类,你的1.19.0版本中不存在这个类,因此运行时触发NoClassDefFoundError。- Spring Cloud Azure的版本与Spring Boot版本存在强绑定关系,4.3.0版本的Azure starter依赖的OpenTelemetry版本,需要配合特定版本的Spring Boot才能正常工作。你提到升级OpenTelemetry需更换Spring Boot版本,正是因为当前Spring Boot版本和高版本OpenTelemetry不兼容,而Azure starter又强制引入了高版本OTel,形成依赖链冲突。
- 类加载层面,Tomcat的WebappClassLoader在初始化MetricsProperties Bean时,会通过JavaBeans Introspector解析类信息,此时会尝试加载这个缺失的OTel内部类,最终抛出类找不到的异常。
内容的提问来源于stack exchange,提问作者Guts
相关产品推荐
相关产品推荐

