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...
我正在使用使用 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...