尝试疯狂运行时ClassNotFoundException org.postgresql.Driver

时间:2015-11-08 23:34:39

标签: postgresql java-ee wildfly

我正在尝试使用JavaEE和Wildly 9创建一个访问postgres数据库的测试应用程序。

所以我下载了Wildfly 9并跟随these instructions添加了驱动程序。我跑的时候

/subsystem=datasources:installed-drivers-list

我得到了

{
            "driver-name" => "postgresql-9.4-1201.jdbc41.jar",
            "deployment-name" => "postgresql-9.4-1201.jdbc41.jar",
            "driver-module-name" => undefined,
            "module-slot" => undefined,
            "driver-datasource-class-name" => undefined,
            "driver-xa-datasource-class-name" => undefined,
            "driver-class-name" => "org.postgresql.Driver",
            "driver-major-version" => 9,
            "driver-minor-version" => 4,
            "jdbc-compliant" => false
        }

所以看起来没问题。

我还将jar(postgresql-9.4-1201.jdbc41.jar)文件复制到Wildfly的部署文件夹中。

我将此依赖项添加到我的pom.xml:

<dependency>
            <groupId>org.postgresql</groupId>
            <artifactId>postgresql</artifactId>
            <version>9.4-1201-jdbc41</version>
        </dependency>

这是我的persistence.xml:

<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="postgres">
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
            <property name="hibernate.connection.driver_class" value="org.postgresql.Driver" />
            <property name="hibernate.connection.url" value="jdbc:postgresql://localhost:5432/test" />
            <property name="hibernate.connection.username" value="test" />
            <property name="hibernate.connection.password" value="test" />
            <!-- <property name="hibernate.show_sql" value="true"/> 
            <property name="hibernate.flushMode" value="FLUSH_AUTO" />
            <property name="hibernate.hbm2ddl.auto" value="update" />-->
        </properties>
    </persistence-unit>
</persistence>

但是加班我尝试运行我的应用程序:

  

java.lang.ClassNotFoundException:无法加载请求的类:   org.postgresql.Driver

我错过了什么?我找不到任何其他程序来使它工作。我现在坐在这个问题上几个小时了,我看不到任何我能做的事情。

编辑:我创建了一个数据源并且它可以工作(所以依赖关系都在那里,persistence.xml本身一定有问题)。由于可配置性,我宁愿让它使用persistence.xml文件。

这是我在standalone.xml中配置的数据源

<datasource jta="true" jndi-name="java:/PostgresDS" pool-name="PostgresDS" enabled="true" use-ccm="true">
                    <connection-url>jdbc:postgresql://localhost:5432/stats</connection-url>
                    <driver-class>org.postgresql.Driver</driver-class>
                    <driver>postgresql</driver>
                    <security>
                        <user-name>test</user-name>
                        <password>test</password>
                    </security>
                    <validation>
                        <valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/>
                        <background-validation>true</background-validation>
                        <exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/>
                    </validation>
                </datasource>

0 个答案:

没有答案