You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven打包Eclipse RCP启动失败,OSGI模块版本冲突排查求助

解决Eclipse RCP打包后Windows启动的OSGi依赖冲突问题

已通过Maven完成Eclipse RCP的Windows环境打包,但启动时抛出如下OSGi Bundle解析异常,导致无法运行:

org.osgi.framework.BundleException: Could not resolve module: com.cubrid.common.update [4]
  Unresolved requirement: Require-Bundle: org.eclipse.equinox.p2.operations
    -> Bundle-SymbolicName: org.eclipse.equinox.p2.operations; bundle-version="2.5.800.v20200410-1336"; singleton="true"
       org.eclipse.equinox.p2.operations [93]
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.p2.director
           -> Export-Package: org.eclipse.equinox.internal.p2.director; bundle-symbolic-name="org.eclipse.equinox.p2.director"; bundle-version="2.4.700.v20200511-1530"; version="0.0.0"; x-friends="org.eclipse.equinox.p2.operations,  org.eclipse.equinox.p2.repository.tools,  org.eclipse.pde.core,  org.eclipse.equinox.p2.reconciler.dropins,  org.eclipse.equinox.p2.ui,  org.eclipse.equinox.p2.director.app"
              org.eclipse.equinox.p2.director [82]
                Unresolved requirement: Import-Package: org.eclipse.equinox.internal.provisional.configurator
  Unresolved requirement: Require-Bundle: org.eclipse.equinox.p2.ui
    -> Bundle-SymbolicName: org.eclipse.equinox.p2.ui; bundle-version="2.6.0.v20200602-1138"; singleton="true"
       org.eclipse.equinox.p2.ui [102]
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.provisional.configurator
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.p2.director
           -> Export-Package: org.eclipse.equinox.internal.p2.director; bundle-symbolic-name="org.eclipse.equinox.p2.director"; bundle-version="2.4.700.v20200511-1530"; version="0.0.0"; x-friends="org.eclipse.equinox.p2.operations,  org.eclipse.equinox.p2.repository.tools,  org.eclipse.pde.core,  org.eclipse.equinox.p2.reconciler.dropins,  org.eclipse.equinox.p2.ui,  org.eclipse.equinox.p2.director.app"
         Unresolved requirement: Import-Package: org.eclipse.equinox.internal.p2.operations
           -> Export-Package: org.eclipse.equinox.internal.p2.operations; bundle-symbolic-name="org.eclipse.equinox.p2.operations"; bundle-version="2.5.800.v20200410-1336"; version="0.0.0"; x-friends="org.eclipse.pde.ui,org.eclipse.equinox.p2.ui"

    at org.eclipse.osgi.container.Module.start(Module.java:463)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel$2.run(ModuleContainer.java:1845)
    at org.eclipse.osgi.internal.framework.EquinoxContainerAdaptor$1$1.execute(EquinoxContainerAdaptor.java:136)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1838)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.incStartLevel(ModuleContainer.java:1779)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.doContainerStartLevel(ModuleContainer.java:1743)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1665)
    at org.eclipse.osgi.container.ModuleContainer$ContainerStartLevel.dispatchEvent(ModuleContainer.java:1)
    at org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:234)
    at org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:345)

错误分析

从栈信息来看,核心问题有两点:

  1. org.eclipse.equinox.p2.director和org.eclipse.equinox.p2.ui均无法解析org.eclipse.equinox.internal.provisional.configurator导入包,该包属于org.eclipse.equinox.configurator模块,大概率是打包时遗漏了该核心配置器组件。
  2. P2相关模块(p2.director、p2.operations、p2.ui)版本跨线(分别为2020-05、2020-04、2020-06版本),内部依赖的x-friends限定包存在版本不匹配问题。

需修改的配置项

  1. 补充核心配置器模块

    • 在RCP产品配置(.product文件)的依赖项中添加org.eclipse.equinox.configurator,并设置启动级别为2、标记为自动启动。
    • 若使用Tycho打包,检查target-platform定义文件(.target),确保包含org.eclipse.equinox.configurator模块,且版本与其他Equinox组件匹配。
  2. 统一P2组件版本

    • 调整Maven依赖管理或target-platform配置,确保org.eclipse.equinox.p2.director、org.eclipse.equinox.p2.operations、org.eclipse.equinox.p2.ui使用同一版本线的组件(例如统一采用2020-06版本的P2组件),避免跨版本依赖。
  3. 检查模块依赖声明

    • 查看com.cubrid.common.update模块的MANIFEST.MF文件,确认Require-Bundle中org.eclipse.equinox.p2.operations和org.eclipse.equinox.p2.ui的版本范围是否合理,建议使用宽松的版本范围(如[2.6.0,3.0.0))而非固定版本。
  4. 验证打包配置

    • 检查Maven pom.xml中的Tycho配置,确保tycho-maven-plugin的版本与target-platform的Equinox版本兼容,且打包时包含所有必要的系统bundle。

需要补充的配置文件

如需进一步定位问题,请提供以下文件:

  • RCP产品配置文件(.product)
  • 项目及父模块的pom.xml文件
  • Target平台定义文件(.target,若使用自定义平台)
  • 打包后的configuration/config.ini文件
  • com.cubrid.common.update模块的MANIFEST.MF文件

内容的提问来源于stack exchange,提问作者Dongmin kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:24:51