我对 docker 完全陌生。我们正在将所有服务器更新到 Java 11。下面是我们拥有的包含 Java 8 的 docker 文件。
FROM ubuntu:latest
ENV DEBIAN_FRONTEND noninteractive
# JAVA VERSION
ENV VERSION 8
# config for home directory
ENV JAVA_HOME /usr/lib/jvm/java-${VERSION}-oracle
ENV DEBIAN_FRONTEND noninteractive
# JDK 8
RUN \
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
apt-get update && \
apt-get install -y --no-install-recommends software-properties-common ca-certificates net-tools curl unzip lsof wget git openssh-client && \
add-apt-repository -y ppa:webupd8team/java && \
apt-get update && \
apt-get install -y oracle-java8-set-default oracle-java8-installer && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /var/cache/oracle-jdk8-installer
# set jre as default java
RUN update-alternatives --install "/usr/bin/java" "java" "${JRE_HOME}/bin/java" 1 \
&& update-alternatives --install "/usr/bin/javac" "javac" "${JAVA_HOME}/bin/javac" 1 \
&& update-alternatives --set java "${JRE_HOME}/bin/java" \
&& update-alternatives --set javac "${JAVA_HOME}/bin/javac"
我将 docker 文件更新为
FROM ubuntu:latest
ENV DEBIAN_FRONTEND noninteractive
# JAVA VERSION
ENV VERSION 11
# config for home directory
ENV JAVA_HOME /usr/lib/jvm/java-${VERSION}-openjdk-amd64
ENV DEBIAN_FRONTEND noninteractive
# JDK 11
RUN apt-get update && \
apt-get install -y openjdk-11-jdk && \
apt-get install -y ant && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* && \
rm -rf /var/cache/oracle-jdk11-installer;
# set jre as default java
RUN update-alternatives --install "/usr/bin/java" "java" "${JRE_HOME}/bin/java" 1 \
&& update-alternatives --install "/usr/bin/javac" "javac" "${JAVA_HOME}/bin/javac" 1 \
&& update-alternatives --set java "${JRE_HOME}/bin/java" \
&& update-alternatives --set javac "${JAVA_HOME}/bin/javac"
我收到错误为
0.285 update-alternatives:错误:替代路径 /usr/lib/jvm/java-11-openjdk-amd64/jre/bin/java 不存在
为什么替代品没有更新?我在这里做错了什么?
Java 11+ 的指定目录中没有文件夹
jre
。在我的本地安装中是
$ ls /usr/lib/jvm/java-11-openjdk-amd64/
bin/ conf/ docs/ legal/ lib/ man/ release
另请参阅此答案,了解为什么您不再需要
JRE_HOME
。
将 dockerfile 中的最后一行更改为
RUN update-alternatives --install "/usr/bin/javac" "javac" "${JAVA_HOME}/bin/javac" 1 \
&& update-alternatives --set javac "${JAVA_HOME}/bin/javac"
即用
JRE_HOME
删除线条。