【发布时间】:2021-05-25 00:26:45
【问题描述】:
我正在尝试使用 JOOQ 在使用 sbt 任务的 java play 框架项目中生成 Daos。如果我使用默认的 org.jooq.codegen.JavaGenerator,它工作正常。虽然当我尝试使用扩展原始生成器的自定义类时,我无法在 xml 配置文件中正确链接它。它总是以 java.lang.ClassNotFoundException 结束。
我应该把自定义生成器放在哪里,我应该在配置文件中添加什么?
//project/jooq.sbt:
libraryDependencies += "org.jooq" % "jooq-meta" % "3.14.7"
libraryDependencies += "org.jooq" % "jooq-codegen" % "3.14.7"
libraryDependencies += "org.postgresql" % "postgresql" % "42.2.5"
//build.sbt:
val generateJOOQ = taskKey[Seq[File]]("Generate JooQ classes")
generateJOOQ := {
org.jooq.codegen.GenerationTool.main(Array("conf/jooq-config.xml"))
((sourceManaged.value / "main/generated") ** "*.java").get
}
//sbt console, successful with default generator
$ generateJOOQ
[success] Total time: 3 s, completed 22. 2. 2021 19:02:47
//failing configuration with custom generator
<generator>
<name>generated.codegen.JOOQJavaGenerator</name>
</generator
//sbt console, failing with custom generator
$ generateJOOQ
19:07:05.480 [pool-16-thread-1] ERROR org.jooq.codegen.GenerationTool - Error in file: conf/jooq-config.xml. Error : generated.codegen.JOOQJavaGenerator
java.lang.ClassNotFoundException: generated.codegen.JOOQJavaGenerator
at java.net.URLClassLoader.findClass(URLClassLoader.java:471) ~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:589) ~[?:?]
at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
| => rat org.jooq.codegen.GenerationTool.loadClass0(GenerationTool.java:1075) ~[?:?]
at org.jooq.codegen.GenerationTool.loadClass(GenerationTool.java:1005) ~[?:?]
at org.jooq.codegen.GenerationTool.run0(GenerationTool.java:382) ~[?:?]
at org.jooq.codegen.GenerationTool.run(GenerationTool.java:233) ~[?:?]
at org.jooq.codegen.GenerationTool.generate(GenerationTool.java:228) ~[?:?]
at org.jooq.codegen.GenerationTool.main(GenerationTool.java:200) ~[?:?]
at $281b221f498d45a1a3c3$.$anonfun$$sbtdef$1(/home/severste/SyncthingSync/Uniqway/sources/microservices/dummy-service/uniqway-dummy-service/build.sbt:59) ~[?:?]
at scala.Function1.$anonfun$compose$1(Function1.scala:49) ~[scala-library.jar:?]
at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62) ~[collections_2.12-1.3.13.jar:1.3.3]
at sbt.std.Transform$$anon$4.work(Transform.scala:67) ~[task-system_2.12-1.3.13.jar:1.3.13]
at sbt.Execute.$anonfun$submit$2(Execute.scala:281) ~[tasks_2.12-1.3.13.jar:1.3.13]
at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:19) ~[util-control_2.12-1.3.3.jar:1.3.3]
at sbt.Execute.work(Execute.scala:290) ~[tasks_2.12-1.3.13.jar:1.3.13]
at sbt.Execute.$anonfun$submit$1(Execute.scala:281) ~[tasks_2.12-1.3.13.jar:1.3.13]
at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178) ~[tasks_2.12-1.3.13.jar:1.3.13]
at sbt.CompletionService$$anon$2.call(CompletionService.scala:37) [tasks_2.12-1.3.13.jar:1.3.13]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) [?:?]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) [?:?]
at java.lang.Thread.run(Thread.java:834) [?:?]
【问题讨论】:
标签: java playframework sbt jooq