SQLException: 找不到适合 jdbc:postgresql 的驱动程序
Posted
技术标签:
【中文标题】SQLException: 找不到适合 jdbc:postgresql 的驱动程序【英文标题】:SQLException: No suitable driver found for jdbc:postgresql 【发布时间】:2016-09-01 17:27:23 【问题描述】:java.sql.SQLException: No suitable driver found for jdbc:postgresql://localhost:5432/database2
entityManager.getTransaction()
抛出
JBoss 7.1.1
Class.forName("org.postgresql.Driver");
EntityManager entityManager = Persistence.createEntityManagerFactory("database2").createEntityManager();
EntityTransaction transaction = entityManager.getTransaction();
persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">
<persistence-unit name="database2" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<properties>
<property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" />
<property name="javax.persistence.jdbc.user" value="user" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/database2" />
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
</properties>
</persistence-unit>
</persistence>
目录结构
EJB:
|
|- src
|
|- class1.java
|- interface1.java
|
|- META_INF
|
|-persistence.xml
WEB:
|
|- src
| |
| |- class2.java
|
|-WebContent
|
|- WEB-INF
|
|- lib
|
|- postgresql-9.1-903.jdbc4.jar
EAP_HOME/modules/org/postgresql/main/module.xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="org.postgresql">
<resources>
<resource-root path="postgresql-9.1-903.jdbc4.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
</dependencies>
</module>
CLI 命令:
/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=org.postgresql,driver-xa-datasource-class-name=org.postgresql.Driver)
【问题讨论】:
尝试将JDBC驱动安装为核心模块access.redhat.com/documentation/en-US/… 您需要确保将JDBC驱动放在服务器(JBoss)自己的/lib文件夹中。 @Nicolas Filotto 安装 postgresql-9.1-903.jdbc4.jar 作为核心模块后仍然存在相同的异常。还有其他想法吗? @Atul Dwivedi JBoss 7 没有 lib 目录:developer.jboss.org/thread/166539?tstart=0 【参考方案1】:正如 Nicolas 所说,将 JDBC 驱动程序安装为 core module
接下来你需要让你的应用依赖这个模块有两种方法: 曼尼斯特.MF jboss-dependency.xml
我推荐第一种方式,因为它更符合规范。本质上,您需要在 EAR 或 WAR(无论正在部署什么)的 META-INF 目录中创建一个 MANIFEST.MF 文件。您在文件中创建的行将类似于:
Dependencies: org.postgresql
如需更多信息,请参阅JBoss EAP documentation 或JBoss wiki。我希望这会有所帮助!
【讨论】:
以上是关于SQLException: 找不到适合 jdbc:postgresql 的驱动程序的主要内容,如果未能解决你的问题,请参考以下文章
SQLException: 找不到适合 jdbc:mysql://localhost:3306/dbname 的驱动程序
java.sql.SQLException:找不到适合 jdbc:microsoft:sqlserver 的驱动程序
java.sql.SQLException:找不到适合 jdbc 的驱动程序:mysql://localhost:3306/dbname [重复]
java.sql.SQLException: 找不到适合 jdbc:sqlserver 的驱动程序... (intellij, maven)
java.sql.SQLException: 找不到适合 jdbc:mysql://localhost:3306/sushi 的驱动程序
HHH000231:模式导出不成功:java.sql.SQLException:找不到适合 jdbc:postgresql 的驱动程序