You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

安装openjdk-8-jdk后执行update-alternatives提示Java替代项未注册报错

问题根因

脚本存在两处逻辑错误,直接触发该报错:

  • 路径匹配规则错误:通过apt源安装的OpenJDK 8遵循Debian系文件命名规范,默认安装路径为/usr/lib/jvm/java-8-openjdk-<CPU架构>/,amd64架构下完整java可执行文件路径为/usr/lib/jvm/java-8-openjdk-amd64/bin/java。原脚本按照Oracle JDK的路径格式拼接出的/usr/lib/jvm/jdk1.8.0_312/bin/java实际不存在,自然没有被update-alternatives注册。
  • 缺少候选项注册步骤:如果系统是首次安装Java,对应可执行文件未提前加入alternatives管理列表时,直接执行--set参数会因找不到匹配候选项报错。
修复方法

最简方案(推荐)

OpenJDK 8的apt安装包自带alternatives配置逻辑,不需要手动拼接路径,安装完成后直接通过官方命令切换版本即可:

sudo apt-get update
sudo apt-get install -y openjdk-8-jdk
# 执行后会列出所有已注册的Java版本,输入OpenJDK 8对应的序号回车即可完成切换
sudo update-alternatives --config java
# 验证版本是否正确
java -version

如果需要非交互式自动设置默认版本为OpenJDK 8,直接执行以下命令即可,自动适配所有CPU架构:

# 将OpenJDK 8的java可执行文件注册到alternatives列表,设置优先级为1081(高于Ubuntu源中其他高版本OpenJDK的默认优先级)
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-*/bin/java 1081
# 直接设置为全局默认
sudo update-alternatives --set java /usr/lib/jvm/java-8-openjdk-*/bin/java
# 验证配置结果
java -version

原脚本修正方案

如果需要保留原有脚本的执行流程,只需要修正路径获取逻辑即可,删除错误的版本号拼接规则,替换为实际的OpenJDK路径查找逻辑:

sudo apt-get update
sudo apt-get install -y openjdk-8-jdk
echo 'Updating eventually the correct version of Java...'
# 自动查找系统中已安装的OpenJDK 8可执行文件路径
JAVA_BIN=$(find /usr/lib/jvm -name "java" -path "*java-8-openjdk*" | head -n 1)
# 注册候选项
sudo update-alternatives --install /usr/bin/java java "$JAVA_BIN" 1081
# 设置为默认版本
sudo update-alternatives --set java "$JAVA_BIN"
预期结果

配置完成后执行java -version,会输出类似如下的OpenJDK 8版本信息,无alternatives相关报错:

openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-8u312-b07-0ubuntu1~20.04-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

内容的提问来源于stack exchange,提问作者Hani Gotc Reinstate Monica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 21:57:22