OSGI с Hibernate: «Не найден подходящий драйвер» - PullRequest
1 голос
/ 04 ноября 2011

Я получаю любимую ошибку:

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

Я понимаю много причин, по которым обычно возникает эта ошибка:

  • Неверный URL: Этот 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 , в котором находятся классы и зависимости Hibernate.

1 Ответ

2 голосов
/ 04 ноября 2011

Как у вас это упаковано?Если вы поместите банку Hibernate и JDBC Postgresql в один и тот же пакет OSGi, он должен работать.Это то, что BIRT загружает свои драйверы jdbc.

...