当我尝试使用 Eclipse 中的 PostgreSQL 使用 Jdbc 配置来运行 Hibernate 示例项目时,出现错误“线程“main”中的异常 org.hibernate.service.spi.ServiceException: 无法创建请求的服务 [org.hibernate.engine. jdbc.env.spi.JdbcEnvironment] “。即使在搜索类似类型的问题后,我也无法解决此错误。这是为了使用Hibernate 5.2.17、PostgreSQL 11和Jdk 1.8运行新的 hibernate 项目。我尝试使用 Hibernate v4.2.0 运行,但它给出了 jdbc 错误“ClassLoadingException”。我的 hibernate.cfg.xml 文件:<!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD//EN""http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">org.postgres.Driver</property> <property name="hibernate.connection.url">jdbc:postgres://localhost:5432/hibernatedb</property> <property name="hibernate.connection.username">postgres</property> <property name="hibernate.connection.password">password</property> <property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property> <property name="connection.pool_size">1</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">1</property> <!-- Drop and re-create the database schema on startup --> <property name="hibernate.hbm2ddl.auto">create</property> <!-- Names the annotated entity class --> <mapping class="home.practice.hibernate.dto.UserDetails"/> </session-factory></hibernate-configuration>我的模型类 ieUserDetails.javapackage home.practice.hibernate.dto;import javax.persistence.Entity;import javax.persistence.Id;@Entitypublic class UserDetails { @Id private int userId; private String userName; public int getUserId() { return userId; }
1 回答
跃然一笑
TA贡献1826条经验 获得超6个赞
当您看到带有如下堆栈跟踪的异常时:
Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.postgres.Driver [...] at java.lang.Class.forName(Unknown Source) [...]
类路径中很可能没有类加载器由于 Class.forName 调用而尝试加载的类。
当使用 Class.forName 动态加载类时,该类仅在运行时需要,而不是在编译时需要,并且当不可用时,它会生成此类错误。
您的 hibernate.cfg.xml 中有一个拼写错误:
<property name="hibernate.connection.driver_class">org.postgres.Driver</property>
driver_class
Class.forName
这是传递给堆栈跟踪中的调用的类;postgres jdbc 驱动程序的正确类名org.postgresql.Driver
不是org.postgres.Driver
,所以
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
添加回答
举报
0/150
提交
取消