Lucee 5.2.9升级至5.3.8版本OSGi依赖冲突问题求助
问题本质
你遇到的是典型的OSGi包约束冲突错误:javax.xml.namespace包同时从stax.api和org.lucee.xml.apis两个bundle中导出,而org.lucee.axis通过两条不同的依赖链分别引入了来自两个bundle的同名包,触发了OSGi的类隔离校验规则导致启动失败。
排查解决方向
- 优先校验Java版本兼容性
Lucee 5.3.8官方支持的Java版本为8和11,你当前使用的Java 16属于非兼容版本,高版本JDK内置的javax.xml系列核心包会和Lucee自带的XML相关OSGi bundle产生冲突。先将开发环境JDK切换为11,验证是否是版本兼容导致的问题。 - 移除自定义重复依赖
你自行加载的axis-1.4.0.L0001.jar和Lucee 5.3.x版本内置的axis、jaxrpc、wsdl4j官方bundle产生了依赖冲突。先删除应用lib目录下的自定义axis包,测试使用Lucee内置的axis实现是否可以正常运行。 - 清理OSGi缓存
Lucee的Felix缓存会残留旧版本的bundle加载信息,升级后未清理缓存极易出现这类依赖冲突。停止Lucee服务后,删除Lucee安装目录下的lucee-server/context/felix-cache文件夹,重启服务让系统重新加载所有bundle,大部分缓存导致的冲突都可以直接解决。 - 统一包导出来源
如果必须使用自定义的axis包,可以通过Lucee管理员后台的OSGi配置页面,强制指定javax.xml.namespace包仅从单个bundle导出:要么屏蔽stax.api的javax.xml.namespace导出,要么屏蔽org.lucee.xml.apis的对应导出,避免两个bundle同时对外暴露同名包。 - 核对bundle版本一致性
在Lucee管理员后台的Bundle管理页面,核对stax.api、org.lucee.xml.apis、org.lucee.axis、org.lucee.wsdl4j、org.lucee.jaxrpc这些相关bundle的版本,确认所有bundle都是Lucee 5.3.8的官方配套版本,替换所有非官方的自定义bundle版本。
内容的提问来源于stack exchange,提问作者user3149617
相关产品推荐
相关产品推荐

