无法使用gradle-jooq-plugin-3.0.1,jooq-3.11.2查找或加载主类org.jooq.codegen.GenerationTool

时间:2018-07-23 14:05:08

标签: gradle jooq

我有一个使用gradle-jooq-plugin-3.0.1jooq-3.11.2和Spring Boot 1的项目。当我尝试生成JOOQ文件时,收到以下错误消息:

> Task :generateSampleJooqSchemaSource FAILED
Error: Could not find or load main class org.jooq.codegen.GenerationTool

这是一个缩小的构建文件:

plugins {
  id 'nu.studer.jooq' version '3.0.1'
  id 'org.springframework.boot' version '1.5.14.RELEASE'
  id 'java'
}

repositories {
  mavenCentral()
}

dependencies {
  jooqRuntime 'com.h2database:h2:1.4.177'
  compile 'org.jooq:jooq'
}

bootRepackage.enabled = false

jooq {
  version = '3.11.2'

  sample(sourceSets.main) {
    jdbc {
      driver = 'org.h2.Driver'
      url = 'jdbc:h2:~/test-gradle'
      user = 'sa'
      password = ''
    }
    generator {
      database {}
      target {
        packageName = 'org.jooq.example.gradle.db'
      }
    }
  }

}

有什么想法吗?根据{{​​3}},这应该可以正常工作。

2 个答案:

答案 0 :(得分:6)

该插件似乎忽略了配置的版本(3.11.2),并使用了Spring Boot(3.9.6)中的版本。 org.jooq.codegen.GenerationTool仅在JOOQ-3.11.0中引入。

作为解决方法,您可以覆盖Spring Boot的JOOQ版本:

ext['jooq.version'] = '3.11.2'

我已经报告了一个问题:gradle-jooq-plugin/issues/81

答案 1 :(得分:0)

我不确定它是否对您有用,但就我而言,它是否有用

  • 在pom.xml中放置适当的版本依赖项。
  • 在您的xml文件所在的文件夹中放置苗条版本依赖项jar。
  • 在.xml文件中,在配置标记中验证jooq-codgen的版本。
  • 在.xml文件中,检查数据库配置驱动程序和凭据。
  • 在.xml文件中,生成器标记包含正确的架构值和名称。 例如<name>org.jooq.meta.mysql.MySQLDatabase</name>
  • 在.xml文件中,检查目标标记是否包含正确的程序包值和目录路径。
  • 现在可以执行了, 在ubuntu中,使用命令创建sh文件,

    java -cp jooq-3.11.6.jar:jooq-meta-3.11.6.jar:jooq-codegen-3.11.6.jar:[JDBC-driver] .jar:mysql-connector-java-8.0。 12.jar: org.jooq.codegen.GenerationTool database.xml

    对于Windows,使用命令创建bat文件

    java -cp jooq-3.11.6.jar; jooq-meta-3.11.6.jar; jooq-codegen-3.11.6.jar; [JDBC-driver] .jar; mysql-connector-java-8.0。 12.jar ;. org.jooq.codegen.GenerationTool database.xml

  • Ubuntu用户请检查访问权限一次,这也会造成问题。

JOOQ问题主要是由于版本不匹配或找不到路径。