JDK 21 报错:Cannot resolve symbol 'TimeUnit'解决方法

JDK 21 报错:Cannot resolve symbol ‘TimeUnit’

Java 开发人员在使用 JDK 21 时可能会遇到一个棘手的问题:无法导入 TimeUnit 类。别担心,这只是因为在 JDK 21 中,TimeUnit 类已被转移到了一个新的包——java.time。为了在 JDK 21 中顺利使用 TimeUnit 类,你需要稍作调整。

新的导入方式

要想在 JDK 21 中使用 TimeUnit 类,只需在导入语句中指定新的包名即可:

1
import java.time.TimeUnit;

你也可以直接使用 TimeUnit 类的全限定名:

1
java.time.TimeUnit.SECONDS;

替代方案:Duration 和 ChronoUnit 类

JDK 21 中,除了 TimeUnit 类,还提供了 Duration 和 ChronoUnit 类,它们可以更精确地表示时间间隔。

Duration 类可以表示从纳秒到数百万年的时间间隔,并提供各种操作时间间隔的方法,例如加、减和比较。ChronoUnit 类则提供了秒、分钟和小时等时间单位,可与 Duration 类结合使用,表示特定时间间隔。

最终方法:切换回JDK1.8

  • 确保你的项目的 JDK 配置正确设置为 JDK 1.8。有时候,IDE 可能会使用一个不完整或错误配置的 JDK。
  • 在 IntelliJ IDEA 中,你可以通过以下步骤确认或更改 JDK 版本:
    1. 右键点击项目根目录,选择 “Open Module Settings” (或按下 F4)。
    2. 在 “Project” 设置中,确保 “Project SDK” 被设置为 JDK 21。
    3. 在 “Modules” 中,也确保 “Language level” 设置正确。

缓存或 IDE 问题

  • 试着重新同步或重建你的项目,有时候IDE的缓存可能导致一些类无法解析。你可以尝试以下步骤:
    1. 在 IntelliJ IDEA 中,使用 File > Invalidate Caches / Restart,然后选择 “Invalidate and Restart”。
    2. 重新构建项目 (Build > Rebuild Project)。