Java17升21后Maven依赖未在MANIFEST.MF插件显示及Hibernate迁移求助
解决方案
1. 修正MANIFEST.MF的依赖与环境配置
Hibernate Jakarta版本的OSGI Bundle符号名与原javax版本不同,同时需要同步Java执行环境版本:
- 将
Bundle-RequiredExecutionEnvironment从JavaSE-17改为JavaSE-21 - 替换
Require-Bundle中的Hibernate依赖条目:
原配置:
org.hibernate.orm.core;bundle-version="5.6.15"
替换为:
org.hibernate.core.jakarta;bundle-version="5.6.15.Final"
修正后的关键片段:
Bundle-RequiredExecutionEnvironment: JavaSE-21 Require-Bundle: jakarta.persistence-api, be.lettergen.jdbc.driver, org.apache.servicemix.bundles.c3p0, org.hibernate.core.jakarta;bundle-version="5.6.15.Final"
2. 对齐Maven依赖与OSGI版本
确认Maven中hibernate-core-jakarta的版本(5.6.15.Final)与MANIFEST.MF中指定的版本完全一致,同时检查jakarta.persistence-api版本是否适配Hibernate 5.6.x Jakarta分支(推荐2.2.3及以上版本)。
3. 清理并同步Eclipse项目
- 执行
Project -> Clean...,清理项目编译输出 - 右键项目选择
Maven -> Update Project,勾选"Force Update of Snapshots/Releases" - 重新加载目标平台:
Window -> Preferences -> Plug-in Development -> Target Platform,选中当前平台后点击"Reload"
4. 验证目标平台中的Bundle
若插件仍无法找到,手动检查目标平台是否包含该Bundle:
- 打开
Window -> Show View -> Other... -> Plug-in Development -> Plug-ins - 搜索
org.hibernate.core.jakarta确认是否存在 - 若不存在,通过目标平台定义的
Add... -> Maven Artifacts方式引入该依赖Bundle
内容的提问来源于stack exchange,提问作者ahmed homrani
相关产品推荐
相关产品推荐

