当业务的springboot单元(非基于的spring单元)在元数据文件META-INF中导配置了Require-Bundle,然后先更新spring基于单元(业务的springboot单元依赖这个基础的springboot单元),然后再更新业务单元,当涉及到加载的类在springboot基础单元时,注会报ClassCastException,原因是在springboot业务单元加载到了旧的springboot基础单元导致(classloader不一样了)。
关键加载位置
类:org.eclipse.osgi.internal.loader.BundleLoader
方法:findClassInternal

META-INF导入项
Require-Bundle: springbase
解决
1:去除元数据文件中的 Require-Bundle 项。
2:采用动态导入配置,在元数据中文件中配置:Dynamicimport-Package: *
评论区