文系プログラマによるTIPSブログ

文系プログラマ脳の私が開発現場で学んだ事やプログラミングのTIPSをまとめています。

jOOQ v3.11にアップデートした際にgradle-jooq-pluginで出るエラーの対応

jOOQのパッケージ構成が少し変わりますよ〜

f:id:treeapps:20190128100247p:plain

先日gradleでjOOQの依存を以下のように更新しました。

依存名 アップデート前 アップデート後
jOOQ v3.10.7 v3.11.9
gradle-jooq-plugin v2.0.11 v3.0.2

gradle-jooq-pluginがメジャーバージョンアップしてたので絶対動かないだろうなあと思ったら、案の定動きませんでした。

ちょっと修正しただけで動いたので、メモっておきます。

jOOQをv3.11系にした際に起きるエラー

tree:database tree$ ./generate-jooq.sh

> Task :generateExampleJooqSchemaSource FAILED
1 28, 2019 9:59:52 午前 org.jooq.tools.JooqLogger info
情報: Initialising properties  : /Users/tree/github/kotlin-spring-boot-jooq-liquibase-thymeleaf-example/database/build/tmp/generateExampleJooqSchemaSource/config.xml
1 28, 2019 9:59:53 午前 org.jooq.tools.JooqLogger warn
警告: Type not found           : Your configured org.jooq.util type was not found.
Do note that in jOOQ 3.11, jOOQ-meta and jOOQ-codegen packages have been renamed. New package names are:
- org.jooq.meta
- org.jooq.meta.extensions
- org.jooq.codegen
- org.jooq.codegen.maven
See https://github.com/jOOQ/jOOQ/issues/7419 for details
1 28, 2019 9:59:53 午前 org.jooq.tools.JooqLogger error
重大: Cannot read /Users/tree/github/kotlin-spring-boot-jooq-liquibase-thymeleaf-example/database/build/tmp/generateExampleJooqSchemaSource/config.xml. Error : Your configured org.jooq.util type was not found.
Do note that in jOOQ 3.11, jOOQ-meta and jOOQ-codegen packages have been renamed. New package names are:
- org.jooq.meta
- org.jooq.meta.extensions
- org.jooq.codegen
- org.jooq.codegen.maven
See https://github.com/jOOQ/jOOQ/issues/7419 for details
java.lang.ClassNotFoundException: Your configured org.jooq.util type was not found.
Do note that in jOOQ 3.11, jOOQ-meta and jOOQ-codegen packages have been renamed. New package names are:
- org.jooq.meta
- org.jooq.meta.extensions
- org.jooq.codegen
- org.jooq.codegen.maven
See https://github.com/jOOQ/jOOQ/issues/7419 for details
        at org.jooq.codegen.GenerationTool.loadClass(GenerationTool.java:857)
        at org.jooq.codegen.GenerationTool.run(GenerationTool.java:331)
        at org.jooq.codegen.GenerationTool.generate(GenerationTool.java:222)
        at org.jooq.codegen.GenerationTool.main(GenerationTool.java:194)
Caused by: java.lang.ClassNotFoundException: org.jooq.util.DefaultGenerator
        at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at org.jooq.codegen.GenerationTool.loadClass(GenerationTool.java:821)
        ... 3 more

エラーに丁寧に何が起きているか書いてますね。これは親切です。

対応

変更前パッケージ 変更後パッケージ
org.jooq.util.DefaultGenerator org.jooq.codegen.DefaultGenerator
org.jooq.util.DefaultGeneratorStrategy org.jooq.codegen.DefaultGeneratorStrategy
org.jooq.util.mysql.MySQLDatabase org.jooq.meta.mysql.MySQLDatabase

上記のようにパッケージがutilからcodegen・metaと細分化されました。org.jooq.meta.mysql.MySQLDatabase は postgres等に適宜変更しましょう。

この修正だけで基本的に動かくかと思います。