jOOQ 抛出 class file for java.util.concurrent.Flow not found for where 条件

jOOQ throws class file for java.util.concurrent.Flow not found for where condition

我正在使用使用 jOOQ 的 'where' 功能的删除和更新方法:

public static void delete(DSLContext context, Table<? extends Record> table, Condition condition) {
    context.delete(table)
            .where(condition)
            .execute();
}

在 jOOQ 文件中,它在 DeleteWhereStep 处抛出错误 - @CheckReturnValue DeleteConditionStep where(Condition var1);

我收到 java:无法访问 java.util.concurrent.Flow class java.util.concurrent.Flow 的文件在 where(condition) 点找不到错误。

我使用的版本是 - jooq, jooq-meta, jooq-codegen, jooq-meta-extensions-liquibase: 3.15.5

请帮忙。

该错误与您的特定查询无关,但与您的依赖项管理有关。

java.util.concurrent.Flow class 仅添加到 JDK 9 中,JDK 8 中尚不可用。从 jOOQ 3.15 开始,jOOQ开源版有一个 Java 11 基线,因此直接依赖于 JDK 11 API,包括 Flow。如果你想继续使用 Java 8 和 jOOQ 3.15,你需要升级到商业发行版,它们继续支持 Java 8。你可以找到 jOOQ 的 Java 版本支持矩阵在这里: https://www.jooq.org/download/versions

尽管使用了商业版本,但您仍然可能不小心将 jOOQ 开源版依赖项拉出并因此 运行 陷入此错误的一个常见原因可能与使用第三方依赖项管理框架有关,比如SpringBoot,默认依赖jOOQ开源版。这篇博客 post 解释了如何解决这个问题: https://blog.jooq.org/how-to-use-jooqs-commercial-distributions-with-spring-boot/

此外,请确保您在代码生成设置中以及 运行 时都使用了正确的依赖项,如您在 this section of the manual.

中所见

它说:

<!-- Specify the maven code generator plugin -->
<!-- Use org.jooq                for the Open Source Edition
         org.jooq.pro            for commercial editions with Java 17 support, 
         org.jooq.pro-java-11    for commercial editions with Java 11 support,
         org.jooq.pro-java-8     for commercial editions with Java 8 support,
         org.jooq.trial          for the free trial edition with Java 17 support, 
         org.jooq.trial-java-11  for the free trial edition with Java 11 support, 
         org.jooq.trial-java-8   for the free trial edition with Java 8 support 
         
     Note: Only the Open Source Edition is hosted on Maven Central. 
           Import the others manually from your distribution -->
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>3.16.5</version>

所以你需要选择:

  • <groupId>org.jooq.pro-java-8</groupId> 如果您已经获得许可
  • <groupId>org.jooq.trial-java-8</groupId> 如果您正在试用 jOOQ

或者,如果您想使用 jOOQ 开源版,则必须恢复到 3.14 版本,它仍然使用 Java 8 作为基准 - 或者,为什么不直接使用有机会升级到 Java 17...