1

系统总览:

  • 用于 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 ?
4

1 回答 1

0

我在没有为 JDBC 类驱动程序定义类路径的 mysql.jdbc 包中发现问题(我的错误,我可能监督了这一点)......我还检查了 PAX JPA,我认为在我更改 MYSQL JDBC 包后现在不需要 PAX JPA和 OSGi 捆绑包的好友政策。我想保持简单:Equinox + Eclipselink JPA+JDBC 驱动程序......我现在解决了所有问题。一切正常。

于 2012-10-12T15:33:21.030 回答