从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
在较旧的Java版本中重用程序包名称较旧的jOOQ版本在jooq
和jooq-meta
/ 工件之间存在软件包名称冲突jooq-codegen
,所有这些都重新使用了该org.jooq.util
软件包。在较早版本的Java(直到Java 8)中,这是可以的。
在JPMS下,从Java 9开始,在模块路径(与传统类路径相对)上运行代码时,不再允许这样做。对于向前兼容性,当jOOQ将模块化的,在问题的包jooq-meta
,并jooq-codegen
已更名为:https://github.com/jOOQ/jOOQ/issues/7419
现在,以下代码生成模块中的软件包具有以下前缀:
jooq-meta
: org.jooq.meta
jooq-meta-extensions
: org.jooq.meta.extensions
jooq-codegen
: org.jooq.codegen
jooq-codegen-maven
: org.jooq.codegen.maven
该jooq
模块(运行)并没有改变其包名。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句