一尘不染

java.lang.ClassNotFoundException:org.jooq.util.JavaGenerator

sql

从jOOQ 3.10升级到3.11后,我遇到以下异常:

Caused by: java.lang.ClassNotFoundException: org.jooq.util.JavaGenerator
    at java.net.URLClassLoader.findClass (URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass (ClassLoader.java:424)
    at java.lang.ClassLoader.loadClass (ClassLoader.java:357)
    at org.jooq.codegen.GenerationTool.loadClass (GenerationTool.java:819)
    at org.jooq.codegen.GenerationTool.run (GenerationTool.java:329)
    at org.jooq.codegen.GenerationTool.generate (GenerationTool.java:220)
    at org.jooq.codegen.maven.Plugin.execute (Plugin.java:195)

这是什么原因呢?此类已被删除吗?


阅读 143

收藏
2021-05-30

共1个答案

一尘不染

org.jooq.util在较旧的Java版本中重用程序包名称

较旧的jOOQ版本在jooqjooq-meta/工件之间存在软件包名称冲突jooq- codegen,所有这些都重新使用了该org.jooq.util软件包。在较早版本的Java(直到Java 8)中,这都是可以的。

Java 9 / JPMS的前向兼容性

在JPMS下,从Java
9开始,在模块路径(而不是传统类路径)上运行代码时,不再允许这样做。对于向前兼容性,当jOOQ将模块化的,在问题的包jooq- meta,并jooq-codegen已更名为:
https://github.com/jOOQ/jOOQ/issues/7419

现在,以下代码生成模块中的软件包具有以下前缀:

  • jooq-metaorg.jooq.meta
  • jooq-meta-extensionsorg.jooq.meta.extensions
  • jooq-codegenorg.jooq.codegen
  • jooq-codegen-mavenorg.jooq.codegen.maven

jooq模块(运行)并没有改变其包名。

2021-05-30