intellij idea
中使用 jdk 11 时出现 “package
java
.time does not exist” 错误,通常是因编译级别、maven 配置与 jdk 版本不一致导致;需同步设置项目语言级别、编译器目标
字节
码版本及 maven 的 source/target 版本。
java.time.Duration 是 Java 8 引入的核心时间 API,理论上 JDK 11 完全支持。但若 IDE 或构建工具仍以低版本(如 Java 7 或未显式指定)进行编译,则 java.time 包将不可见——这正是 driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10)) 编译失败的根本原因。
要彻底解决该问题,请
三步同步校准
,确保从 IDE 到 Maven 全链路统一使用 Java 11:
✅ 步骤 1:设置模块语言级别(Project Structure)
路径:File → Project Structure → Modules → [你的模块] → Sources
将
Language level
明确设为 11 (Preview) - Local variable syntax for lambda parameters(或仅 11)
⚠️ 注意:仅设置 Project SDK(JDK 11)不够,必须显式指定 Language Level。
✅ 步骤 2:配置 IDE 编译器字节码版本
路径:File → Settings → Build, Execution, Deployment → Compiler → Java Compiler
将
Target bytecode version
设为 11
此设置影响 IntelliJ 内置编译器(如点击 ▶️ 运行 TestNG 时的编译行为),缺一不可。
✅ 步骤 3:声明 Maven 编译插件版本(pom.xml)
在 pom.xml 的 中添加或更新 maven-compiler-plugin,强制 Maven 使用 Java 11 编译:
? 提示:若已存在该插件但 / 未设置,或值为 1.8,请务必修正;Maven 默认可能沿用旧版配置,不会自动继承 IDE 的 JDK 设置。
? 同步刷新与验证
完成上述配置后:
Eclipse导入Android或其他的JAVA项目的正确方法 WORD版
本文档主要讲述的是Eclipse导入Android或其他的JAVA项目的正确方法;希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
下载
立即学习
“
Java免费学习笔记(深入)
”;
点击 File → Reload project(或 Maven 工具窗口中的刷新按钮);
删除 target/ 目录,重新 mvn clean compile;
在 IDEA 中右键运行 testng.xml 前,确认右下角状态栏显示 JDK 11,且无红色波浪线提示 Duration 类无法解析。
? 补充说明
java.time 不是第三方库,无需额外依赖,仅需正确编译环境;
若使用 Spring Boot 项目,还需检查 spring-boot-maven-plugin 是否覆盖了编译配置(通常不会,但建议核对 maven-compiler-plugin 是否被父 POM 覆盖);
Community 版 IntelliJ 对 Java 11 支持完善,无需降级或切换版本——问题几乎 100% 出在配置未对齐。
通过以上三重保障,import java.time.Duration 将正常解析,Selenium 的 implicitlyWait(Duration) 调用可顺利编译执行。
org.apache.maven.plugins
maven-compiler-plugin
3.8.1
11
11
UTF-8
