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

Docker镜像安装OpenJDK9与Gradle4.5.1失败求助

排查Docker构建失败:无法安装OpenJDK 9的问题

嘿,我来帮你搞定这个问题!首先,你遇到的返回码100是apt-get的典型错误,意思是它找不到你要安装的openjdk-9-jdk-headless包。这不是你的指令写错了,而是Ubuntu最新版(ubuntu:latest)的软件源里已经没有OpenJDK 9了——OpenJDK 9是短期支持版本,早在2018年就停止维护了,主流Linux发行版的官方仓库都把它移除了。

另外,你的Dockerfile还有两个小问题需要调整:

  • CMD /bin/bash放在了Gradle安装步骤前面,虽然构建时还会执行后面的指令,但这不符合最佳实践,应该把容器启动命令放在最后。
  • MAINTAINER指令已经被Docker官方弃用了,现在推荐用LABEL maintainer="..."来替代。

修复方案

方案1:直接用官方OpenJDK 9镜像(推荐)

如果必须用OpenJDK 9,最省心的方式是直接用官方提供的OpenJDK 9镜像,不用自己手动折腾安装:

FROM openjdk:9-jdk-slim
LABEL maintainer="Hari Sekhon"
LABEL Description="Java + Ubuntu (OpenJDK)"

# 安装Gradle 4.5.1,顺便清理冗余工具减小镜像体积
RUN apt-get update && apt-get install -y --no-install-recommends wget unzip \
    && wget -q https://services.gradle.org/distributions/gradle-4.5.1-bin.zip \
    && unzip gradle-4.5.1-bin.zip -d /opt \
    && rm gradle-4.5.1-bin.zip \
    && apt-get purge -y --auto-remove wget unzip \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 配置Gradle环境变量
ENV GRADLE_HOME /opt/gradle-4.5.1
ENV PATH $PATH:$GRADLE_HOME/bin

CMD /bin/bash

方案2:用旧版Ubuntu(不推荐,安全性低)

如果你坚持要基于Ubuntu构建,可以用还保留OpenJDK 9包的旧版Ubuntu,比如ubuntu:18.04(但这个版本也快停止维护了,安全性没保障):

FROM ubuntu:18.04
LABEL maintainer="Hari Sekhon"
LABEL Description="Java + Ubuntu (OpenJDK)"
ENV DEBIAN_FRONTEND noninteractive

ARG JAVA_VERSION=9
ARG JAVA_RELEASE=JDK
# 修正JAVA_HOME到正确的路径
ENV JAVA_HOME=/usr/lib/jvm/java-9-openjdk-amd64

RUN set -euxo pipefail && \
    apt-get update && \
    pkg="openjdk-$JAVA_VERSION"; \
    if [ "$JAVA_RELEASE" = "JDK" ]; then \
        pkg="$pkg-jdk-headless"; \
    else \
        pkg="$pkg-jre-headless"; \
    fi; \
    apt-get install -y --no-install-recommends "$pkg" && \
    apt-get clean && \
    rm -rf /var/lib/apt/lists/*

# 安装Gradle并清理冗余
RUN apt-get update && apt-get install -y --no-install-recommends wget unzip \
    && wget -q https://services.gradle.org/distributions/gradle-4.5.1-bin.zip \
    && unzip gradle-4.5.1-bin.zip -d /opt \
    && rm gradle-4.5.1-bin.zip \
    && apt-get purge -y --auto-remove wget unzip \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 配置Gradle环境变量
ENV GRADLE_HOME /opt/gradle-4.5.1
ENV PATH $PATH:$GRADLE_HOME/bin

CMD /bin/bash

额外提示

  • 官方OpenJDK镜像经过优化,更可靠,还能帮你省掉手动安装JDK的麻烦,优先选方案1准没错。
  • 安装Gradle时我们加了清理步骤,删掉了临时用的wget和unzip,还清理了apt缓存,这样能让镜像体积小很多,这是Docker构建的最佳实践哦。
  • 原Dockerfile里把JAVA_HOME设为/usr是不对的,方案2里已经修正成了正确的路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:08:04