PostgreSQL驱动程序在使用Spring和Jooq的Java应用程序启动时出现异常。

huangapple 未分类评论48阅读模式
英文:

PostgresSQL Driver Exception at start up for a Java application with Spring And Jooq

问题

以下是翻译好的部分:

我会使用 Spring 框架和 Jooq 库创建一个 Java 后端应用,并使用 Maven 作为构建工具。我已经使用 Jooq 解决了一些问题,现在成功生成了类,但是应用在启动时出现了以下与 PostgreSQL 驱动程序相关的错误。

错误内容如下:

org.springframework.beans.factory.BeanCreationException: 在类路径资源 [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class] 中定义的名为 'dataSource' 的 Bean 创建失败;嵌套异常是 org.springframework.beans.BeanInstantiationException:通过工厂方法实例化 Bean 失败;嵌套异常是 java.lang.IllegalStateException:无法加载驱动程序类:org.postgresql.Driver
...
java.lang.IllegalStateException:无法加载驱动程序类:org.postgresql.Driver

pom.xml 文件如下:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.1.RELEASE</version>
        <relativePath/> <!-- 从仓库中查找父级 -->
    </parent>
    <groupId>....</groupId>
    <artifactId>....</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>....</name>
    <description>....</description>

    <properties>
        <java.version>1.8</java.version>
        <org.jooq.version>3.13.2</org.jooq.version>
        <!-- 其他属性设置 -->
    </properties>

    <dependencies>
        <!-- 依赖配置 -->
    </dependencies>

    <build>
        <plugins>
            <!-- 插件配置 -->
        </plugins>
    </build>
</project>

application.properties 文件如下:

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/db
spring.datasource.username=...
spring.datasource.password=...

非常感谢您对此错误和 Jooq 配置的支持。

英文:

I would create a java backend application using spring framework and jooq library and maven as a build tool.
I solved some problem with jooq and, now, generate correctly the classes, but the application fails at startup with the below error on postgresql driver.

The error is this:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name &#39;dataSource&#39; defined in class path resource [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method &#39;dataSource&#39; threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.postgresql.Driver
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method &#39;dataSource&#39; threw exception; nested exception is java.lang.IllegalStateException: Cannot load driver class: org.postgresql.Driver
Caused by: java.lang.IllegalStateException: Cannot load driver class: org.postgresql.Driver

the pom.xml is this:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
         xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
    &lt;parent&gt;
        &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
        &lt;artifactId&gt;spring-boot-starter-parent&lt;/artifactId&gt;
        &lt;version&gt;2.3.1.RELEASE&lt;/version&gt;
        &lt;relativePath/&gt; &lt;!-- lookup parent from repository --&gt;
    &lt;/parent&gt;
    &lt;groupId&gt;....&lt;/groupId&gt;
    &lt;artifactId&gt;....&lt;/artifactId&gt;
    &lt;version&gt;0.0.1-SNAPSHOT&lt;/version&gt;
    &lt;name&gt;....&lt;/name&gt;
    &lt;description&gt;....&lt;/description&gt;

    &lt;properties&gt;
        &lt;java.version&gt;1.8&lt;/java.version&gt;
        &lt;org.jooq.version&gt;3.13.2&lt;/org.jooq.version&gt;
        &lt;lifecycle-mapping.version&gt;1.0.0&lt;/lifecycle-mapping.version&gt;
        &lt;sql-maven-plugin.version&gt;1.5&lt;/sql-maven-plugin.version&gt;
        &lt;properties-maven-plugin.version&gt;1.0.0&lt;/properties-maven-plugin.version&gt;
        &lt;start-class&gt;.....&lt;/start-class&gt;
    &lt;/properties&gt;

    &lt;dependencies&gt;

        &lt;!-- base dependency --&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-starter-web&lt;/artifactId&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.projectlombok&lt;/groupId&gt;
            &lt;artifactId&gt;lombok&lt;/artifactId&gt;
            &lt;optional&gt;true&lt;/optional&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-starter-jooq&lt;/artifactId&gt;
        &lt;/dependency&gt;

        &lt;!-- postgreSQL and jooq --&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.jooq&lt;/groupId&gt;
            &lt;artifactId&gt;jooq&lt;/artifactId&gt;
            &lt;version&gt;3.13.2&lt;/version&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.jooq&lt;/groupId&gt;
            &lt;artifactId&gt;jooq-meta&lt;/artifactId&gt;
            &lt;version&gt;3.13.2&lt;/version&gt;
        &lt;/dependency&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.jooq&lt;/groupId&gt;
            &lt;artifactId&gt;jooq-codegen&lt;/artifactId&gt;
            &lt;version&gt;3.13.2&lt;/version&gt;
        &lt;/dependency&gt;


        &lt;!--test --&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
            &lt;artifactId&gt;spring-boot-starter-test&lt;/artifactId&gt;
            &lt;scope&gt;test&lt;/scope&gt;
            &lt;exclusions&gt;
                &lt;exclusion&gt;
                    &lt;groupId&gt;org.junit.vintage&lt;/groupId&gt;
                    &lt;artifactId&gt;junit-vintage-engine&lt;/artifactId&gt;
                &lt;/exclusion&gt;
            &lt;/exclusions&gt;
        &lt;/dependency&gt;
    &lt;/dependencies&gt;

    &lt;build&gt;
        &lt;plugins&gt;
            &lt;plugin&gt;
                &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
                &lt;artifactId&gt;spring-boot-maven-plugin&lt;/artifactId&gt;
            &lt;/plugin&gt;


            &lt;plugin&gt;
                &lt;groupId&gt;org.jooq&lt;/groupId&gt;
                &lt;artifactId&gt;jooq-codegen-maven&lt;/artifactId&gt;
                &lt;version&gt;${org.jooq.version}&lt;/version&gt;

                &lt;dependencies&gt;
                    &lt;dependency&gt;
                        &lt;groupId&gt;org.postgresql&lt;/groupId&gt;
                        &lt;artifactId&gt;postgresql&lt;/artifactId&gt;
                        &lt;version&gt;42.2.8&lt;/version&gt;
                    &lt;/dependency&gt;
                &lt;/dependencies&gt;

                &lt;configuration&gt;
                    &lt;jdbc&gt;
                        &lt;driver&gt;org.postgresql.Driver&lt;/driver&gt;
                        &lt;url&gt;jdbc:postgresql:db&lt;/url&gt;
                        &lt;user&gt;...&lt;/user&gt;
                        &lt;password&gt;...&lt;/password&gt;
                    &lt;/jdbc&gt;

                    &lt;generator&gt;
                        &lt;database&gt;
                            &lt;name&gt;org.jooq.meta.postgres.PostgresDatabase&lt;/name&gt;
                            &lt;includes&gt;.*&lt;/includes&gt;
                            &lt;excludes&gt;&lt;/excludes&gt;
                            &lt;inputSchema&gt;public&lt;/inputSchema&gt;
                        &lt;/database&gt;
                        &lt;target&gt;
                            &lt;packageName&gt;...&lt;/packageName&gt;
                            &lt;directory&gt;src/main/java&lt;/directory&gt;
                        &lt;/target&gt;
                    &lt;/generator&gt;
                &lt;/configuration&gt;
            &lt;/plugin&gt;
        &lt;/plugins&gt;
    &lt;/build&gt;
&lt;/project&gt;

My application.properties is this:

spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.url=jdbc:postgresql://localhost:5432/db
spring.datasource.username=...
spring.datasource.password=...

I will be immensely grateful for all the support on this error and jooq configuration.

huangapple
  • 本文由 发表于 2020年6月29日 16:21:29
  • 转载请务必保留本文链接:https://java.coder-hub.com/62633952.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定