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

Dockerfile从Oracle Java8升级OpenJDK11时update-alternatives报错排查

OpenJDK 11 Docker镜像中update-alternatives报错分析与解决

错误原因

报错核心是路径不匹配:Oracle Java 8的目录结构包含单独的jre子目录,但OpenJDK 11(以及Java 9+版本)不再单独划分JRE目录,JRE相关文件直接整合在JDK的bin目录下,你指定的/usr/lib/jvm/java-11-openjdk-amd64/jre/bin/java路径实际不存在。

你的操作问题

  • 直接沿用Oracle Java 8时代的update-alternatives配置路径,忽略了Java 9+版本的目录结构变更
  • 未提前确认OpenJDK 11实际文件存放路径,就照搬旧命令执行

解决步骤

  1. 确认正确路径
    先查看OpenJDK 11的实际可执行文件位置:

    ls /usr/lib/jvm/java-11-openjdk-amd64/bin/
    

    会看到java、javac等文件直接在该目录下,无jre层级。

  2. 修正update-alternatives命令
    使用正确路径重新配置:

    # 配置java命令
    update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1
    # 配置javac命令(若需编译功能)
    update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java-11-openjdk-amd64/bin/javac 1
    
  3. 验证配置生效
    执行以下命令确认配置:

    update-alternatives --config java
    

    选择对应的OpenJDK 11选项,再用java -version检查版本是否正确。

Dockerfile优化建议

作为Docker新手,更简便的方式是直接使用官方维护的openjdk:11系列镜像,这类镜像已预配置好Java环境,无需手动执行update-alternatives,示例Dockerfile:

FROM openjdk:11-jdk-slim
# 后续应用部署、环境变量配置等步骤

内容的提问来源于stack exchange,提问作者Mahaboob

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 02:51:10