从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)
这是什么原因呢?此类已被删除吗?
org.jooq.util
较旧的jOOQ版本在jooq和jooq-meta/工件之间存在软件包名称冲突jooq- codegen,所有这些都重新使用了该org.jooq.util软件包。在较早版本的Java(直到Java 8)中,这都是可以的。
jooq
jooq-meta
jooq- codegen
在JPMS下,从Java 9开始,在模块路径(而不是传统类路径)上运行代码时,不再允许这样做。对于向前兼容性,当jOOQ将模块化的,在问题的包jooq- meta,并jooq-codegen已更名为: https://github.com/jOOQ/jOOQ/issues/7419
jooq- meta
jooq-codegen
现在,以下代码生成模块中的软件包具有以下前缀:
org.jooq.meta
jooq-meta-extensions
org.jooq.meta.extensions
org.jooq.codegen
jooq-codegen-maven
org.jooq.codegen.maven
该jooq模块(运行)并没有改变其包名。