如何查找未通过SDKMAN管理的旧版本Java运行时路径
如何查找未通过SDKMAN管理的旧版本Java运行时路径
嗨,我来帮你定位那些没被SDKMAN接管的旧版Java路径,试试下面这些方法:
用
update-alternatives工具查询(Linux)
很多Linux发行版会用这个工具管理系统默认的可执行程序,运行以下命令就能列出所有注册的Java可执行文件路径:sudo update-alternatives --list java输出的路径类似
/usr/lib/jvm/java-11-openjdk-amd64/bin/java,去掉末尾的/bin/java,剩下的就是对应JDK的根目录了,比如/usr/lib/jvm/java-11-openjdk-amd64/。检查系统常见的Java安装目录
不同系统的默认安装路径不一样,直接去这些目录看看:- Linux:
/usr/lib/jvm/(系统级安装的JDK基本都在这)、/opt/(手动解压的JDK常放在这里) - macOS:
/Library/Java/JavaVirtualMachines/(每个版本的JDK都是这个目录下的独立子文件夹)
- Linux:
查看环境变量配置文件
如果你之前给旧版本Java设置过JAVA_HOME,可以去shell配置文件里找记录:# 检查bash配置 grep JAVA_HOME ~/.bashrc # 检查zsh配置 grep JAVA_HOME ~/.zshrc找到对应的
JAVA_HOME值就是旧版本JDK的路径。用
find命令全局搜索
如果上面的方法都没找到,试试全局搜索特定版本的JDK文件夹,比如找OpenJDK 11:find / -name "*jdk-11*" -type d 2>/dev/null这个命令会遍历系统查找名字包含
jdk-11的目录,2>/dev/null是用来屏蔽权限不足的错误提示,让输出更干净。
找到路径后,你就可以把它添加到Neovim的JAVA_RUNTIME_PATHS配置里,比如:
local JAVA_RUNTIME_PATHS = { { name = "JavaSE-21", path = HOME .. "/.sdkman/candidates/java/21-open/", }, { name = "JavaSE-17", path = HOME .. "/.asdf/installs/java/corretto-17.0.4.9.1", }, { name = "JavaSE-11", path = "/找到的jdk11路径/", }, }
备注:内容来源于stack exchange,提问作者codemage
相关产品推荐
相关产品推荐

