登录
首页 >  文章 >  java教程

Java11time包使用问题解决方法

时间:2026-01-27 08:36:46 492浏览 收藏

有志者,事竟成!如果你在学习文章,那么本文《Java11 time包不可用解决方法》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

Java 11 中 java.time 包不可用的完整解决方案

IntelliJ IDEA 中出现 “package java.time does not exist” 错误,根本原因是项目编译级别、JDK 配置或 Maven 编译插件未统一设为 Java 11,导致 java.time.Duration 等 Java 8+ 新增 API 无法识别。

该错误常见于 Selenium + TestNG 的 Maven 项目中,尤其当代码中使用了 Duration.ofSeconds(10) 并显式导入 import java.time.Duration 时——这要求运行环境和编译环境均支持 Java 8 及以上版本(java.time 自 Java 8 引入,但 JDK 11 是更稳妥的基准)。尽管你已安装 JDK 11 并在模块中设置了 Language Level 为 11,仍报错,说明多层级编译配置未完全对齐

✅ 正确解决需同步校准以下三个关键位置:

1. 模块语言级别(Project Structure)

  • 路径:File → Project Structure → Modules → Sources
  • 确保 Language level 明确选择 11 (Preview) - Local variable syntax for lambda parameters 或至少 11
  • ⚠️ 注意:仅设置为 “Project default” 不可靠,务必手动指定为 11

2. 编译器字节码目标版本(IDEA 编译器设置)

  • 路径:File → Settings → Build, Execution, Deployment → Compiler → Java Compiler
  • 设置 Target bytecode version 为 11
  • 同时确认 Project bytecode version(位于同一页面顶部)也为 11
    → 此项控制 IDEA 内置编译器生成的 .class 文件兼容性,若仍为 8 或未设置,java.time 类型将被忽略。

3. Maven 编译插件配置(pom.xml)

即使 IDE 配置正确,Maven 构建(如执行 testng.xml 时由 Maven 触发)仍会按 pom.xml 中定义的规则编译。必须显式声明源码与目标版本:

<build>
  <plugins>
    <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 路径(若多 JDK 共存) -->
        <!-- <fork>true</fork>
        <executable>/path/to/jdk-11/bin/javac</executable> -->
      </configuration>
    </plugin>
  </plugins>
</build>

? 验证是否生效?
执行以下任一操作后重新编译:

  • 在 IDEA 中点击 File → Reload project(针对 Maven 项目)
  • 终端运行 mvn clean compile,观察是否仍有编译错误
  • 在测试类中尝试 new Duration() —— 若无红线且可跳转到 java.time.Duration,即配置成功。

? 额外建议:

  • 检查 Project SDK 是否真正指向 JDK 11:File → Project Structure → Project → Project SDK
  • 避免混用 JRE 与 JDK:java.time 属于 JDK 标准库,运行时必须使用完整 JDK(而非仅 JRE)
  • 若使用 IntelliJ 的内置构建(非 Maven),还需检查 Build → Build Tools → Maven → Importing 中的 JDK for importer 是否设为 JDK 11

完成上述三步后,driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10)) 将正常编译与运行,java.time 包不再报错。核心原则是:JDK 版本、源码级别、字节码目标、构建工具配置,四者必须严格一致为 Java 11。

到这里,我们也就讲完了《Java11time包使用问题解决方法》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

前往漫画官网入口并下载 ➜
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>