Java版本更新包安装
maven安装后,我有更新的Java符号链接问题。 我使用简单的docker文件:
FROM java:8 RUN ["java", "-version"] RUN apt-get update && apt-get install -y maven && rm -rf /var/lib/apt/lists/* RUN ["java", "-version"] CMD ["java", "-version"]
在构build期间,我有下一个日志:
Step 0 : FROM java:8 ---> 4cd29d33e3f4 Step 1 : RUN java -version ---> Running in 1c528620f318 openjdk version "1.8.0_66-internal" OpenJDK Runtime Environment (build 1.8.0_66-internal-b01) OpenJDK 64-Bit Server VM (build 25.66-b01, mixed mode) ---> d25e96460a85 Removing intermediate container 1c528620f318 Step 2 : RUN apt-get update && apt-get install -y maven && rm -rf /var/lib/apt/lists/* ....installation logs.... Setting up openjdk-7-jre-headless:amd64 (7u79-2.5.6-1~deb8u1) ... update-alternatives: using /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/rmid to provide /usr/bin/rmid (rmid) in auto mode update-alternatives: using /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java to provide /usr/bin/java (java) in auto mode
所以你可以看到maven带来了java 7,update-alternatives使它成为了默认的版本。 所以我有几个问题:
- 为什么Maven需要java 7而java 8已经安装? 为什么依赖不透明?
- 是否有可能不安装Java 7而使用Java 8呢?
- 如果不是,将java 8设置为默认的最佳方法是什么? 删除Java 7,configuration更新替代品或其他东西?
我认为这一切都是特定的发行版。
如下所示:在你select的发行版(Ubuntu?)中,你正在安装的Maven包依赖于OpenJDK 7(而不是8)。
我看到了Java 8 / Maven安装的两个选项:
- 从tgz安装maven
- 创build你自己的maven包
我试着看你的设置
https://github.com/BITPlan/docker-stackoverflowanswers/tree/master/33324470
并通过运行:
./build ./run
我进入了一个bash,看看情况是什么:
Java版本
root@940c282bd6ad:/# java -version java version "1.7.0_79" OpenJDK Runtime Environment (IcedTea 2.5.6) (7u79-2.5.6-1~deb8u1) OpenJDK 64-Bit Server VM (build 24.79-b02, mixed mode)
所以默认情况下,这个发行版使用OpenJDK 1.7
Maven版本
root@940c282bd6ad:/# mvn -version Apache Maven 3.0.5 Maven home: /usr/share/maven Java version: 1.8.0_66-internal, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre Default locale: en, platform encoding: UTF-8 OS name: "linux", version: "4.1.10-boot2docker", arch: "amd64", family: "unix"
maven使用Oracle Java 1.8
现在你有多个选项
select另一个默认的java,如上所述
https://askubuntu.com/questions/272187/setting-jdk-7-as-default
root@940c282bd6ad:/# update-alternatives --config java There are 2 choices for the alternative java (providing /usr/bin/java). Selection Path Priority Status ------------------------------------------------------------ * 0 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 auto mode 1 /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java 1071 manual mode 2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1069 manual mode
切换默认java版本,如下所示:
https://askubuntu.com/questions/491778/switch-to-oracle-java-jdk-in-14-04
- Docker Debian apt从服务器读取错误
- 在dockerfile中绕过安assembly置
- Dockerhub无法构build我的Dockerfile
- apt-get在基于Debian和Ubuntu的Docker镜像中失败
- 在Docker中,Debian httpredir镜像系统不可靠/不可用?
- 为什么在Dockerfile构build过程中apt-get exit没有错误?
- 在docker容器中安装openssh-server,g ++,gdb和gdbserver Visual C ++ for Linux Development + Docker
- Docker CMD指令执行
- 来自debian的docker:wheezy不能构build