jpa - java.lang.ClassNotFoundException:无法加载请求的类:org.postgresql.Driver
问题描述
我的问题是当我在我的 Bean 中创建一个 DAO 实例时
public class ClientDAO {
EntityManager entity=JPAutil.getEntityManegerFactory().createEntityManager();
public void create(Client client){
entity.getTransaction().begin();
entity.persist(client);
entity.getTransaction().commit();
JPAutil.shotDown();
}
public void update(Client client){
entity.getTransaction().begin();
entity.merge(client);
entity.getTransaction().commit();
JPAutil.shotDown();
}
public void find(int id){
entity.getTransaction().begin();
entity.find(Client.class,id);
}
public List<Client> findall(){
List<Client> listaC= new ArrayList<Client>();
Query q=entity.createQuery("SELECT c FROM Client c");
listaC = q.getResultList();
return listaC;
}
public Client findbyId(int idc){
Client C= new Client();
Query q=entity.createQuery("SELECT c FROM Client c WHERE id="+idc);
C = (Client) q.getSingleResult();
return C;
}
}
我尝试运行应用程序我在服务器中遇到崩溃
Caused by: org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [org.postgresql.Driver]
at org.hibernate@5.3.13.Final//org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:134)
at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.loadDriverIfPossible(DriverManagerConnectionProviderImpl.java:163)
at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildCreator(DriverManagerConnectionProviderImpl.java:119)
at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.buildPool(DriverManagerConnectionProviderImpl.java:103)
at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.connections.internal.DriverManagerConnectionProviderImpl.configure(DriverManagerConnectionProviderImpl.java:75)
at org.hibernate@5.3.13.Final//org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:100)
at org.hibernate@5.3.13.Final//org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:246)
at org.hibernate@5.3.13.Final//org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:214)
at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145)
at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66)
at org.hibernate@5.3.13.Final//org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35)
at org.hibernate@5.3.13.Final//org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:94)
at org.hibernate@5.3.13.Final//org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263)
... 98 more
Caused by: java.lang.ClassNotFoundException: Could not load requested class : org.postgresql.Driver
at org.hibernate@5.3.13.Final//org.hibernate.boot.registry.classloading.internal.AggregatedClassLoader.findClass(AggregatedClassLoader.java:210)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at org.hibernate@5.3.13.Final//org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:131)
... 110 more
谢谢你的时间。
Pom.xml 我已经使测试和本地 JPA 工作没有问题问题是当我尝试在服务器中使用它时。在这个 Pom 中有一个 Driver von Postgres 和连接器 Hibernate。
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>groupId</groupId>
<artifactId>pruebe</artifactId>
<version>1.0-SNAPSHOT</version>
<!---Servlet-->
<dependencies>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>8.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.10.Final</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>```
解决方案
您需要 JDBC 驱动程序到您的项目中的数据库,您可以从这里下载它 https://jdbc.postgresql.org/
推荐阅读
- java - 编程新手。构建简单的银行应用程序 - 令牌“;”上的语法错误,{ 预期。- Eclipse 中的错误(包括代码)
- linux - 在 shell 的文本文件中做一些计算
- python - 如何遍历数据框的列,然后在每个列上运行 describe() 函数?
- html - 使用 Tampermonkey 中的按钮切换 HTML
- python - 在简单的 Python Tkinter 程序中使用开/关功能实现暗模式?
- javascript - javascript:在 For 循环中,将值推送到数组变量中,但值被附加(推送)且未定义
- javascript - 如何将我的 onSucceeded() 函数传递给父组件?
- vb.net - 如何从 Discord.Net 获得延迟?
- postgresql - 如何计算以下 JSON 中的元素数
- android - android studio中的数据库wal和shm