我正在尝试将我的 dockerfile 从 oracle Java 8 更新到 OpenJdk 11。我在更新 java 编译器的替代方案时遇到问题

问题描述 投票:0回答:1

我对 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 不存在

为什么替代品没有更新?我在这里做错了什么?

docker java-8 dockerfile java-11
1个回答
0
投票

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
删除线条。

© www.soinside.com 2019 - 2024. All rights reserved.