英文:
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 'dataSource' 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 'dataSource' 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 'dataSource' 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:
<?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/> <!-- lookup parent from repository -->
    </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>
        <lifecycle-mapping.version>1.0.0</lifecycle-mapping.version>
        <sql-maven-plugin.version>1.5</sql-maven-plugin.version>
        <properties-maven-plugin.version>1.0.0</properties-maven-plugin.version>
        <start-class>.....</start-class>
    </properties>
    <dependencies>
        <!-- base dependency -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jooq</artifactId>
        </dependency>
        <!-- postgreSQL and jooq -->
        <dependency>
            <groupId>org.jooq</groupId>
            <artifactId>jooq</artifactId>
            <version>3.13.2</version>
        </dependency>
        <dependency>
            <groupId>org.jooq</groupId>
            <artifactId>jooq-meta</artifactId>
            <version>3.13.2</version>
        </dependency>
        <dependency>
            <groupId>org.jooq</groupId>
            <artifactId>jooq-codegen</artifactId>
            <version>3.13.2</version>
        </dependency>
        <!--test -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.junit.vintage</groupId>
                    <artifactId>junit-vintage-engine</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.jooq</groupId>
                <artifactId>jooq-codegen-maven</artifactId>
                <version>${org.jooq.version}</version>
                <dependencies>
                    <dependency>
                        <groupId>org.postgresql</groupId>
                        <artifactId>postgresql</artifactId>
                        <version>42.2.8</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <jdbc>
                        <driver>org.postgresql.Driver</driver>
                        <url>jdbc:postgresql:db</url>
                        <user>...</user>
                        <password>...</password>
                    </jdbc>
                    <generator>
                        <database>
                            <name>org.jooq.meta.postgres.PostgresDatabase</name>
                            <includes>.*</includes>
                            <excludes></excludes>
                            <inputSchema>public</inputSchema>
                        </database>
                        <target>
                            <packageName>...</packageName>
                            <directory>src/main/java</directory>
                        </target>
                    </generator>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
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.
专注分享java语言的经验与见解,让所有开发者获益!

评论