系统总览:
- 用于 RAP RCP 开发人员的 Eclipse Indigo、RAP 1.4 目标组件、Dali JPA、Jre1.6.0_33 (Java1.6SE)
- 本地 oracle mysql 数据库
- 项目中导入的所有 JPA(持久性)+ Eclipse 链接 OSGi 包(根据 eclipse wiki)
- 包含在项目中导入的 com.mysql.jdbc.Driver 类的 OSGi 包(最新 5.1.21 ?来自 Oracle 页面)
- 通过 JPA 创建的持久性插件,带有 jdbc 驱动程序,正确的 mysql 数据库路径,正确的密码和用户(添加了对 com.mysql.jdbc 包的依赖项)
为避免 ClassLoader 问题:
- bundle/plugin com.mysql.jdbc在其 MANIFEST.MF: Bundle-BuddyPolicy: 已注册
- org.eclipse.persistence.core & org.eclipse.persitence.jpa和我的“persistence bundle” 在他们的 MANIFEST.MF 中注册了Buddy : Eclipse-RegisterBuddy:com.mysql.jdbc + 他们已经添加了对这个 bundle com.mysql 的依赖.jdbc
问题:
即使经过所有先前的步骤,我仍然:
ClassNotFoundException - Driver not found
评论:
- 从 Eclipse DatabaseConnection 内部测试到 localhost mysql db 的连接,使用来自捆绑包 com.mysql.jdbc(com.mysql.jdbc.Driver类)的相同驱动程序 [OK]
- 如果带有嵌入式驱动程序的org.apache.derby嵌入式数据库用于持久性(而不是 mysql)(具有相同的好友策略),则不会出现问题 - 一切正常
问题:
- 即使应用了 BuddyPolicy,ClassLoaders 还会有问题吗?
- 当它用作 OSGi 捆绑包时,驱动程序本身可能有问题吗?
- 有没有人尝试在 RCP 或 RAP 中使用这个 com.mysql.osgi 包和 JPA+Eclipselink ?