Jooq 无法找到 postgres 数据库的驱动程序
Posted
技术标签:
【中文标题】Jooq 无法找到 postgres 数据库的驱动程序【英文标题】:Jooq is unable to find driver for postgres database 【发布时间】:2019-06-22 11:46:46 【问题描述】:我有一个使用 gradle、postgres 和 jooq 的 spring-boot 应用程序。
我希望 Jooq 的代码生成器为我创建类,但在 gradle clean build
期间,我收到有关驱动程序的错误
java.lang.ClassNotFoundException: org.postgresql.Driver
我不明白为什么找不到驱动程序。这是我的gradle.build
文件的一些相关方面:
plugins
id "org.springframework.boot" version "2.0.2.RELEASE"
id 'nu.studer.jooq' version '3.0.1'
我使用的是 Spring Boot 的 2.0.2.RELEASE
版本。这是我的依赖项:
dependencies
implementation "org.springframework.boot:spring-boot-starter-web:$SPRING_VERSION"
implementation "org.springframework.boot:spring-boot-starter-actuator:$SPRING_VERSION"
implementation "org.springframework.boot:spring-boot-starter-jooq:$SPRING_VERSION"
implementation "org.springframework.boot:spring-boot-starter-data-jpa:$SPRING_VERSION"
implementation "org.springframework.boot:spring-boot-starter-jooq:$SPRING_VERSION"
implementation 'org.postgresql:postgresql:42.2.5'
这是我的 gradle 文件中的 Jooq 配置
jooq
myApp(sourceSets.main)
jdbc
driver = 'org.postgresql.Driver'
url = "jdbc:postgresql://$db_host:$db_port/$db_name"
user = "$db_username"
password = "$db_password"
schema = 'public'
generator
name = 'org.jooq.util.DefaultGenerator'
strategy
name = 'org.jooq.util.DefaultGeneratorStrategy'
database
name = 'org.jooq.util.postgres.PostgresDatabase'
inputSchema = 'public'
generate
relations = true
deprecated = false
records = true
immutablePojos = false
fluentSetters = true
target
packageName = 'com.mycompany.mayapp.model.jooq'
directory = 'out/production/classes/generated'
```
【问题讨论】:
您需要将驱动程序添加到jooqRuntime
配置中。见github.com/etiennestuder/gradle-jooq-plugin。
@M.Deinum 成功了,谢谢:)
【参考方案1】:
gradle-jooq-plugin 需要单独配置中的依赖项。它使用jooqRuntime
配置来检测所需的依赖关系,它不使用compile
或implementation
配置。
将以下内容添加到您的依赖项中应该可以解决问题
jooqRuntime 'org.postgresql:postgresql:42.2.5'
这样插件会获取驱动程序并生成模型类。
【讨论】:
以上是关于Jooq 无法找到 postgres 数据库的驱动程序的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 JOOQ 使用 H2 为 PostGres 生成存根 - ENUM 类型
通过 gradle 配置 JOOQ Codegen 时找不到 H2 驱动程序
使用 jOOQ UPserting 到 Postgres 表时返回更新的行数