Кто-нибудь знает, что здесь происходит:
Я запускаю hibernate 3.2.6 для базы данных PostgreSQL 8.3 (установленной через fink) на моей Mac OS X. Настройка отлично работает, когда я использую Java 6 и драйвер JDBC 4 (postgresql-8.3-603.jdbc4). Однако мне нужен этот материал для работы с Java 5 и (следовательно) JDBC 3 (postgresql-8.3-603.jdbc3). Когда я меняю jar в classpath и переключаюсь на Java 5 (я делаю это в eclipse), я получаю следующую ошибку:
Exception in thread "main" org.hibernate.exception.JDBCConnectionException: Cannot open connection
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:74)
<Rows clipped for readability>
Caused by: java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getConnection(DriverManager.java:545)
at java.sql.DriverManager.getConnection(DriverManager.java:140)
at org.hibernate.connection.DriverManagerConnectionProvider.getConnection(DriverManagerConnectionProvider.java:110)
at org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
В чем здесь проблема? Я не могу видеть это. Вот моя конфигурация гибернации:
<hibernate-configuration>
<session-factory>
<property name="connection.url">jdbc:postgresql:test</property>
<property name="connection.username">postgres</property>
<property name="connection.password">p</property>
<property name="connection.pool_size">1</property>
<property name="dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="current_session_context_class">thread</property>
<property name="show_sql">true</property>
<mapping resource="com/mydomain/MyClass.hbm.xml"/>
</session-factory>
</hibernate-configuration>
РЕДАКТИРОВАНИЕ: Более длинная, более обычная форма URL-адреса соединения: jdbc: postgresql: // localhost / test имеет точно такое же поведение.
Jar-файл драйвера определенно находится в classpath, и мне также не удается получить никаких ошибок с помощью этого прямого кода теста JDBC:
public static void main(String[] args) throws Exception {
Class.forName("org.postgresql.Driver");
Connection con=DriverManager.getConnection("jdbc:postgresql://localhost/test","postgres", "p");
}