You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JOOQ 3.17.2搭配JDK18运行报错:无法访问java.util.concurrent.Flow

JDK18 + jOOQ 3.17.2 编译报错:找不到 java.util.concurrent.Flow 类

问题场景

使用IntelliJ IDEA,基于JDK18运行简单jOOQ数据库查询示例时编译失败,报错提示找不到java.util.concurrent.Flow类。Stack Overflow现有相关方案因版本差异(JDK18 + jOOQ 3.17.2)不适用。

代码片段

public static void connectToDb() {
    String userName = "root";
    String password = "";
    String url = "jdbc:mysql://localhost:3306/javaspark-db";

    try (Connection conn = DriverManager.getConnection(url, userName, password)) {
        DSLContext dslContext = DSL.using(conn, SQLDialect.MYSQL);
        Author AUTHOR = Author.AUTHOR;
        // 此处select()触发编译报错
        Result<Record> result = dslContext.select().from(AUTHOR).fetch();

        for (Record r : result) {
            Integer id = r.getValue(AUTHOR.ID);
            String firstName = r.getValue(AUTHOR.FIRST_NAME);
            String lastName = r.getValue(AUTHOR.LAST_NAME);

            System.out.println("ID: " + id + " first name: " + firstName + " last name: " + lastName);
        }

    }
    // 简化异常处理
    catch (Exception e) {
        e.printStackTrace();
    }
}

报错信息

/Users/xxxx/xxxx/todo-spark-app/src/main/java/app/Application.java:26:56
java: cannot access java.util.concurrent.Flow
  class file for java.util.concurrent.Flow not found

当前Maven依赖

<dependency>
    <groupId>org.jooq</groupId>
    <artifactId>jooq</artifactId>
    <version>3.17.2</version>
</dependency>
<dependency>
    <groupId>org.jooq</groupId>
    <artifactId>jooq-meta</artifactId>
    <version>3.17.2</version>
</dependency>
<dependency>
    <groupId>org.jooq</groupId>
    <artifactId>jooq-codegen</artifactId>
    <version>3.17.2</version>
</dependency>

解决方案

1. 确认IntelliJ项目JDK配置

  • 打开File > Project Structure > Project Settings > Project
  • 确保Project SDK选择JDK18,Project language level设置为18 - Records, pattern matching, etc.
  • 同步检查Modules下的模块SDK和语言级别是否一致

2. 强制Maven使用JDK18编译

在pom.xml中添加maven-compiler-plugin配置,明确指定编译版本:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.10.1</version>
            <configuration>
                <source>18</source>
                <target>18</target>
                <release>18</release>
            </configuration>
        </plugin>
    </plugins>
</build>

3. 补充MySQL JDBC驱动依赖

连接MySQL数据库需要对应JDBC驱动,在pom.xml中添加:

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.33</version>
</dependency>

4. 清理缓存并重新构建

  • 执行File > Invalidate Caches... > Invalidate and Restart重启IntelliJ
  • 在Maven面板执行clean和compile命令重新构建项目

问题原因

java.util.concurrent.Flow是JDK9及以上版本自带的Reactive Streams API类,jOOQ 3.17.x在JDK9+环境下会依赖该类。报错本质是编译/运行环境的JDK版本不匹配(比如Maven默认使用了低于JDK9的版本),导致编译器找不到该类。

内容的提问来源于stack exchange,提问作者user2052668

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 23:18:22