集成Firestore时抛出NoClassDefFoundError:缺失gRPC相关类
核心原因:gRPC依赖版本冲突
com.google.cloud:google-cloud-firestore:3.9.2依赖特定版本的gRPC核心库(grpc-core),其中包含ManagedChannelImplBuilder$ChannelBuilderDefaultPortProvider这个内部类。但你的项目中存在其他依赖(比如第三方组件或你添加的com.google.firebase:firebase-admin:9.2.0)引入了不同版本的gRPC库,Maven在依赖解析时会选择某一个版本的gRPC jar包最终打入项目,若选中的版本是不包含该类的高版本gRPC,就会抛出NoClassDefFoundError——因为高版本gRPC对该内部类做了重构、改名或移除操作。添加firebase-admin未解决问题的原因
com.google.firebase:firebase-admin:9.2.0自身也依赖gRPC,且它依赖的gRPC版本和google-cloud-firestore:3.9.2所需的版本不兼容。添加这个依赖不仅没有补充缺失的类,反而进一步引入了冲突的gRPC版本,导致问题持续存在。验证依据
你通过Maven依赖树发现多版本gRPC依赖,这直接印证了版本冲突的结论。可以通过执行mvn dependency:tree命令,定位所有grpc-core、grpc-netty等gRPC相关依赖的版本,查看最终被Maven解析选中的版本,确认该版本是否与google-cloud-firestore:3.9.2依赖的gRPC版本一致。
内容的提问来源于stack exchange,提问作者Qeychon

