Hibernate3、PostgreSQL 8.3和Java 5“没有合适的驱动程序”问题
有人知道这里发生了什么吗: 我在Mac OS X上通过fink数据库安装的PostgreSQL 8.3上运行hibernate 3.2.6。当我使用Java 6和JDBC 4驱动程序PostgreSQL-8.3-603.jdbc4时,安装工作正常。然而,我需要这些东西来处理Java5,因此JDBC3PostgreSQL-8.3-603.jdbc3。当我在类路径中更改jar并切换到Java 5时,我在eclipse中执行此操作,会出现以下错误:Hibernate3、PostgreSQL 8.3和Java 5“没有合适的驱动程序”问题,java,hibernate,postgresql,Java,Hibernate,Postgresql,有人知道这里发生了什么吗: 我在Mac OS X上通过fink数据库安装的PostgreSQL 8.3上运行hibernate 3.2.6。当我使用Java 6和JDBC 4驱动程序PostgreSQL-8.3-603.jdbc4时,安装工作正常。然而,我需要这些东西来处理Java5,因此JDBC3PostgreSQL-8.3-603.jdbc3。当我在类路径中更改jar并切换到Java 5时,我在eclipse中执行此操作,会出现以下错误: Exception in thread "main"
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)
您是否注意到连接url不完整
<property name="connection.url">jdbc:postgresql:test</property>
相对于
<property name="connection.url">jdbc:postgresql://localhost/test</property>
您是否注意到连接url不完整
<property name="connection.url">jdbc:postgresql:test</property>
相对于
<property name="connection.url">jdbc:postgresql://localhost/test</property>
您说使用Java5,因此使用JDBC3PostgreSQL-8.3-603.jdbc3。也许这是一个错误的假设 这个问题让我很困惑。这似乎意味着对于Java1.5,您需要JDBC3,但还不是100%清楚。我不知道为什么JDBC4驱动程序不能与Java1.5一起使用,我们在Java1.5中使用DB2JDBC4驱动程序
您在Java 1.5中试用过JDBC4驱动程序吗?您说可以使用Java 5,从而使用JDBC 3 postgresql-8.3-603.jdbc3。也许这是一个错误的假设 这个问题让我很困惑。这似乎意味着对于Java1.5,您需要JDBC3,但还不是100%清楚。我不知道为什么JDBC4驱动程序不能与Java1.5一起使用,我们在Java1.5中使用DB2JDBC4驱动程序
您用Java 1.5尝试过JDBC4驱动程序吗?我没有看到您在Hibernate配置中指定驱动程序类。尝试添加以下内容:
<hibernate-configuration>
<session-factory>
.
.
<property name="connection.driver_class">org.postgresql.Driver</property>
.
</session-factory>
</hibernate-configuration>
我没有看到您在Hibernate配置中指定驱动程序类。尝试添加以下内容:
<hibernate-configuration>
<session-factory>
.
.
<property name="connection.driver_class">org.postgresql.Driver</property>
.
</session-factory>
</hibernate-configuration>
JDBC4的一个新特性是通过服务提供者机制自动加载。通过在jar文件中包含META-INF/services/java.sql.Driver文件,不再需要执行Class.forName。这只适用于1.6 JVM。新的JDBC4特性之一是通过服务提供者机制自动加载。通过在jar文件中包含META-INF/services/java.sql.Driver文件,不再需要执行Class.forName。这只适用于1.6 JVM。我遇到了同样的问题,使用servlet找不到suiteble驱动程序注册驱动程序的解决方案是:
Class driverClass = Class.forName("org.postgresql.Driver");
DriverManager.registerDriver((Driver) driverClass.newInstance());
在此处找到解决方案:
我遇到了同样的问题,使用servlet找不到suiteble驱动程序注册驱动程序的解决方案是:
Class driverClass = Class.forName("org.postgresql.Driver");
DriverManager.registerDriver((Driver) driverClass.newInstance());
在此处找到解决方案:
是的,我实际上有一个较长的版本,第一个相同的行为,适用于Java 6/JDBC4,而不适用于Java 5/JDBC3,我在某个地方看到了依赖默认值的较短形式,并将其保留在那里。我想我会把编辑改回原来的问题。是的,我实际上有一个较长的版本,第一个相同的行为,适用于Java 6/JDBC4,而不适用于Java 5/JDBC3。我看到了一个较短的形式,它依赖于默认值,并将其保留在那里。我想我会为这个问题修改回编辑。我已经修改了,但它不起作用。在您的例子中,用于DB2的JDBC4驱动程序可能是使用1.5或更早版本编译的。就PostgreSQL而言,它是用1.6编译的,因此1.5无法加载类。在您的例子中,用于DB2的JDBC4驱动程序可能是使用1.5或更早版本编译的。就PostgreSQL而言,它是用1.6编译的,因此1.5无法加载类。谢谢!成功了。不知何故,我复制了一个驱动程序类属性不存在的示例。由于它与JDBC4/Java6安装程序配合使用,我无法确定配置文件是否存在问题。谢谢!成功了。不知何故,我复制了一个驱动程序类属性不存在的示例。由于它与JDBC4/Java6安装程序配合使用,我无法确定配置文件是否存在问题。