
intellij idea 中使用 jdk 11 时出现“package java.time does not exist”错误,通常是因项目语言级别、编译器目标字节码版本或 maven 编译插件配置未统一设为 jdk 11 所致。本文提供三步精准修复方案,确保 duration 等新时间 api 正常工作。
该错误看似指向 java.time.Duration 类缺失,实则是编译环境未正确识别 JDK 11 的语言特性与标准库。java.time 包自 Java 8 引入,但若项目编译配置仍锁定在 Java 7 或更低版本(如 Language Level = 8 但 Target bytecode = 1.8),或 Maven 编译插件未显式声明源码与目标兼容性,IDEA 就会忽略 JDK 11 的完整类路径,导致编译期无法解析 java.time 包。
✅ 三步统一配置,彻底解决:
-
设置模块语言级别(Project Structure)
File → Project Structure → Modules → [Your Module] → Sources → Language level → 选择 11 - Local variable syntax for lambda parameters(或直接选 11)。
java-api-doc-generator下载分析 Java Spring Boot 后端 Controller 代码,自动生成 Markdown 格式的接口文档。当用户说“生成 Java 接口文档”、“生成 API 文档”、“从 Spring 代码生成文档”时触发。
⚠️ 注意:仅设置 Project SDK 为 JDK 11 不够,必须显式指定 Language Level。
配置 IDE 编译器目标字节码版本(Settings)
File → Settings → Build, Execution, Deployment → Compiler → Java Compiler → Target bytecode version → 设为 11。
此项控制 IntelliJ 自身编译器生成的 .class 文件版本,若为 1.8,即使源码用 Duration.ofSeconds(10),编译器也会拒绝识别其所属包。同步配置 Maven 编译插件(pom.xml)
在 pom.xml 的中添加或更新 maven-compiler-plugin,强制 Maven 构建时使用 JDK 11:
<plugin><groupid>org.apache.maven.plugins</groupid><artifactid>maven-compiler-plugin</artifactid><version>3.8.1</version><!-- 推荐使用 3.8.1+(兼容 JDK 11+) --><configuration><source>11</source><target>11</target><!-- 可选:显式指定编译器路径,避免多 JDK 冲突 --><compilerargs><arg>--enable-preview</arg></compilerargs></configuration></plugin>
? 验证与补充建议:
- 修改后务必执行 Maven → Reload project(右键项目 → Reload project),使配置生效;
- 检查 Project Settings → Project → Project SDK 和 Project language level 是否均为 JDK 11;
- 若使用 TestNG 运行 testng.xml,还需确认运行配置中 JRE 选项是否指向同一 JDK 11 安装路径(Run → Edit Configurations → JRE);
- 避免混用 source=11 与 target=1.8 等不匹配组合——这会导致编译器行为不一致,是此类错误最常见根源。
完成上述三项配置后,import java.time.Duration; 将被正常识别,driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10)); 可顺利编译执行。核心原则是:JDK 版本、语言级别、字节码目标、Maven 编译参数必须严格对齐为 11。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










