OSGi R7应用升级PostgreSQL至15时的驱动兼容问题求助
OSGi R7 适配PostgreSQL 15 连接池初始化问题解决方案
问题核心
升级PostgreSQL至15版本后,Hikari连接池初始化失败,根源为org.postgresql.jdbc42 bundle无法找到javax.security.sasl.SaslException类,本质是旧驱动版本不兼容PostgreSQL 15,且OSGi环境缺少必要的包导出配置。
具体解决步骤
升级PostgreSQL驱动版本
原42.2.5版本驱动发布时间早于PostgreSQL 15,不具备兼容性。需升级至org.postgresql:postgresql:42.6.0及以上版本(该版本开始全面支持PostgreSQL 15)。注意:新版本驱动的bundle标识已变更为org.postgresql,不再使用org.postgresql.jdbc42,需在OSGi环境中重新安装该bundle。解决
javax.security.sasl依赖缺失问题
OSGi R7默认未导出javax.security.sasl包,需手动配置:- 若使用Equinox框架,修改
config.ini添加org.osgi.framework.system.packages.extra=javax.security.sasl; - 若使用Felix框架,通过启动参数添加
-Dorg.osgi.framework.system.packages.extra=javax.security.sasl,或在框架配置中配置系统包导出规则。
- 若使用Equinox框架,修改
确保HikariCP与驱动版本兼容
需使用与新驱动匹配的HikariCP版本,建议选择4.0.3及以上版本。同时检查OSGi中HikariCP bundle的依赖配置,确保其能正常访问PostgreSQL驱动类及相关依赖包。验证bundle依赖配置
确认新版本PostgreSQL驱动bundle的Import-Package已声明对javax.security.sasl的依赖,若为自定义构建bundle,需在bnd.bnd文件中明确配置Import-Package包含该包。
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

