英文:
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语言的经验与见解,让所有开发者获益!
评论