SDKMAN安装的JDK17/20无法被java_home识别,求简便解决方法
解决SDKMAN安装的JDK无法被
java_home识别的版本切换问题 方法一:直接用SDKMAN自带的版本切换命令
SDKMAN本身就是Java版本管理工具,完全不需要依赖/usr/libexec/java_home,自带的切换命令更简单:
- 临时切换当前终端版本:
执行后当前终端的sdk use java 17.0.8-oracleJAVA_HOME和java命令会自动切换到指定版本,直接运行java -version就能验证生效。 - 设置全局默认版本:
所有新打开的终端都会默认使用这个版本,无需每次手动操作。sdk default java 17.0.8-oracle
方法二:优化别名配置(绕开java_home)
如果习惯用别名切换,直接用SDKMAN的JDK路径配置别名即可,避免java_home识别不到的问题:
alias java17='export JAVA_HOME=/Users/default/.sdkman/candidates/java/17.0.8-oracle; export PATH=$JAVA_HOME/bin:$PATH; java -version' alias java20='export JAVA_HOME=/Users/default/.sdkman/candidates/java/20.0.2-oracle; export PATH=$JAVA_HOME/bin:$PATH; java -version'
把这些别名添加到你的~/.bashrc、~/.zshrc或对应shell的配置文件中,生效后输入java17或java20就能快速切换版本。
补充:让java_home识别SDKMAN的JDK(可选)
如果一定要让/usr/libexec/java_home识别这些版本,可以给每个JDK创建软链接到系统默认扫描目录:
sudo ln -s /Users/default/.sdkman/candidates/java/17.0.8-oracle /Library/Java/JavaVirtualMachines/jdk-17.0.8-oracle.jdk sudo ln -s /Users/default/.sdkman/candidates/java/20.0.2-oracle /Library/Java/JavaVirtualMachines/jdk-20.0.2-oracle.jdk
执行后再运行/usr/libexec/java_home -V就能看到这两个版本,但此方法需要给每个版本重复操作,不如前两种高效。
内容的提问来源于stack exchange,提问作者user16967068
相关产品推荐
相关产品推荐

