在 Mac 上,Java 缓存一旦残留,常见问题往往会随之出现,比如 IDE 卡顿、Maven 构建失败等。要想彻底清理,通常需要手动删除三类用户级缓存:①偏好设置文件 com.oracle.java.JavaPreferences.plist;②插件缓存目录 com.oracle.java.JavaAppletPlugin;③应用支持数据 Oracle/Java/;同时还需要强制重启 cfprefsd 服务,并重新加载 shell 配置,才能真正确认缓存清理已经生效。

在 Mac 上,Java 缓存残留很容易引发不少隐性故障:例如 IDE(如 IntelliJ 或 Eclipse)启动明显变慢、Maven 构建无故报错、java -version 输出异常,甚至还会反复弹出错误的自动更新提示。很多用户第一时间会怀疑是 Java 安装损坏了,但实际情况往往并非如此,问题根源通常出在用户级缓存和偏好设置没有被彻底清除。
删除 Oracle Java 用户级缓存目录
Oracle JDK 会在用户目录下生成三类独立缓存,这些内容不会随着 /Library/Java/JavaVirtualMachines 下的 .jdk 目录删除而自动消失,因此必须手动清理。
打开终端,依次执行以下命令:
rm -f ~/Library/Preferences/com.oracle.java.JavaPreferences.plist
rm -rf ~/Library/Caches/com.oracle.java.JavaAppletPlugin
【注意:第三步路径末尾有空格,必须加反斜杠转义】rm -rf ~/Library/Application Support/Oracle/Java/
清理 Java 插件残留的偏好设置缓存
即使你从未使用过 Java Applet,Oracle 安装器依然可能写入系统级偏好设置缓存。这类缓存通常由 cfprefsd 服务持有,仅仅重启终端并不会自动刷新。
第一步:运行命令强制终止当前用户的偏好设置服务:
sudo killall -u $(whoami) cfprefsd
第二步:等待 3 秒后,重新加载 Java 环境配置:
source ~/.zshrc
这一步如果省略,后续 java_home -V 仍有可能显示已经删除的旧版本——因为缓存尚未刷新,shell 依旧“记住”了它。
验证缓存是否已经真正清空
方法一:检查 Java 偏好设置文件是否仍然存在
ls ~/Library/Preferences/com.oracle.java.*→ 若返回“No such file”,说明已删除
方法二:查看 Java 相关缓存目录是否为空
find ~/Library/Caches -name "*oracle*" -o -name "*java*" 2>/dev/null | grep -v "jdk"
方法三:启动一个干净的终端窗口(不加载任何 shell 配置),直接运行:
unset JAVA_HOME && /usr/libexec/java_home -V
如果输出中不再出现已卸载的 JDK 版本,且没有“Unable to locate a Java Runtime”的警告信息,就说明 Mac 上的 Java 缓存已经清理完成。
