2011-11-04 75 views
1

我得到心爱的错误:OSGI与Hibernate: “没有找到合适的驱动程序”

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

我明白了很多原因,这个错误通常出现:

  • 无效网址:这URL似乎没有任何错误,并且在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驱动程序或实例化它强制它注册没有影响。

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

在此先感谢!


解决方案

正如安德烈奥拉特指出,我做了添加司机到实施捆绑,但离开它了休眠束其中Hibernate的类的错误和依赖关系。

回答

2

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

+0

他们在两个单独的捆绑包,但引用它们或实例化它们没有问题,所以我不能看到这是问题...? –

+0

你可以在Hibernate包中添加代码来访问PostgreSQL包中的类吗?您可能能够从第三个包中访问Hibernate和PostgreSQL包中的类,但这并不意味着Hibernate包将能够访问PostgreSQL包中的类。如果知道它,Hibernate bundle将能够访问PostgreSQL中的类。是否有意义? –

+0

这很可能是这个问题,因为我不记得自从添加PostgreSQL驱动程序后对Hibernate包进行任何更改,并且您猜到我的Hibernate SessionFactory在第三个包中!我会在星期一看这个,回到你身边。 –

相关问题