使用jOOQ 3.19.10编译报错:无法访问java.util.concurrent.Flow
问题
使用Java 17构建代码,已在pom.xml中指定maven.compiler.source和maven.compiler.target为17,且验证过JAVA_HOME环境变量是C:\Program Files\Java\jdk-17.0.11+9。但引入jOOQ 3.19.10依赖后,Maven模块构建失败,提示无法访问java.util.concurrent.Flow;换成jOOQ 3.14版本则无此问题,当前Maven版本为3.9.6。
Maven构建首行命令:
"C:\Program Files\Java\jdk-17.0.11+9\bin\java.exe" -Dmaven
pom.xml相关配置片段:
<properties> <maven.compiler.source>17</maven.compiler.source> <maven.compiler.target>17</maven.compiler.target> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependency> <groupId>org.jooq</groupId> <artifactId>jooq</artifactId> <version>3.19.10</version> </dependency>
解决方案
1. 升级maven-compiler-plugin版本
旧版maven-compiler-plugin对Java 17的模块系统支持不足,导致无法正确识别java.util.concurrent.Flow(该类属于Java 9+的java.base模块)。在pom.xml中添加或更新插件配置:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.12.1</version> <!-- 可使用更高的兼容Java 17的版本 --> <configuration> <!-- 推荐用release参数替代source/target,确保编译输出与Java 17完全兼容 --> <release>17</release> <source>17</source> <target>17</target> </configuration> </plugin> </plugins> </build>
2. 清理Maven缓存
缓存的依赖包可能损坏,执行以下命令清理后重新构建:
mvn clean install -U
3. 适配JPMS模块系统(若启用)
如果项目使用了JPMS模块系统(存在module-info.java),需在其中声明对jOOQ模块的依赖:
module your.module.name { requires org.jooq; }
内容的提问来源于stack exchange,提问作者Humaid Kidwai
相关产品推荐
相关产品推荐

