OSGI与Hibernate:“找不到合适的驱动程序”

时间:2011-11-04 17:10:49

标签: hibernate postgresql jdbc osgi equinox

我收到了心爱的错误:

java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/acme

我理解通常会出现此错误的许多原因:

  • 无效网址:此网址似乎没有任何错误,并且在SQL Workbench中运行良好。
  • 驱动程序不在ClassPath上:它已成功导入(org.postgresql.Driver),可以直接实例化,也可以使用Class.forName(“org.postgresql.Driver”)实例化。

Hibernate SessionFactory加载是从Spring-Bean启动的,但是在运行时使用以下属性执行:

hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.driver_class = org.postgresql.Driver
hibernate.connection.url = jdbc:postgresql://localhost:5432/acme
hibernate.connection.username = user
hibernate.connection.password = pass

我理解Java DriverManager在OSGi中不起作用,因此使用DriverManager注册驱动程序或实例化它以强制它注册无效。

有谁知道如何解决这个问题?有共同的解决方案吗?

提前致谢!


解决方案

正如Andres Olarte所指出的那样,我错误地将驱动程序添加到实现包中,但将其从 Hibernate包中删除,其中Hibernate的类和依赖项驻留。

1 个答案:

答案 0 :(得分:2)

你是如何打包的?如果将Hibernate和Postgresql JDBC jar放在同一个OSGi包中,它应该可以工作。这就是BIRT加载其jdbc驱动程序的原因。