Eclipse编译报错The type java.util.Comparator cannot be resolved如何解决
你遇到的这个报错是Eclipse项目的Java运行环境(JRE)配置异常导致的,和你写的代码逻辑没有关系:java.util.Comparator是Java核心库自带的类,你代码里用到的ArrayList、Collections底层都依赖这个类,因为项目配置的JRE找不到、或者版本不匹配,编译时定位不到这个类,才会报出「间接引用的类无法解析」的错误。
解决步骤
- 右键点击Eclipse左侧项目栏里你的项目名称,选择最底部的「属性(Properties)」
- 在弹出的设置窗口左侧菜单里找到「Java构建路径(Java Build Path)」,点击进入
- 切换到「库(Libraries)」标签页,找到列表里的「JRE系统库(JRE System Library)」:如果前面有红叉、或者显示的版本和你安装的JDK/JRE版本不一致,说明就是这个配置的问题
- 选中这个有问题的JRE系统库,点击右侧的「移除(Remove)」按钮删掉
- 再点击右侧的「添加库(Add Library)」,在弹出的列表里选「JRE系统库」,点击「下一步」
- 直接选择「工作区默认JRE(Workspace default JRE)」即可,如果你单独为这个项目装了指定版本的JDK,可以选「Alternate JRE」后选择对应版本
- 点击「完成」后再点击设置窗口的「应用并关闭(Apply and Close)」
- 按快捷键
Ctrl + B重新构建整个项目,报错就会消失
异常排查
如果按上面操作完还有报错,可以排查两个常见问题:
- 编译版本和JRE版本不匹配:同样在项目属性窗口左侧找到「Java编译器(Java Compiler)」,确认「编译器合规级别(Compiler compliance level)」的版本号和你用的JRE版本一致,比如用JDK8就选1.8,用JDK17就选17
- 项目缓存异常:右键项目选择「刷新(Refresh)」,再点击顶部菜单栏的「项目(Project)」->「清理(Clean)」,选中你的项目清理后重新编译即可
内容的提问来源于stack exchange,提问作者XYkik
相关产品推荐
相关产品推荐

