安装 Ant 会覆盖 Java 安装

安装 Ant 会覆盖 Java 安装

我正在尝试在安装 java 后安装 ANT。我的 Java 是 Sun Java 中的。

pc19@pc19-H110:~$  java -version
java version "20.0.2" 2023-07-18
Java(TM) SE Runtime Environment (build 20.0.2+9-78)
Java HotSpot(TM) 64-Bit Server VM (build 20.0.2+9-78, mixed mode, sharing)

pc19@-H110:~$ echo $JAVA_HOME
/usr/lib/jvm/jdk-20/bin/java

pc19@pc19-H110:~$ whereis java
java: /usr/bin/java /usr/share/java /usr/lib/jvm/jdk-20/bin/java

pc19@-H110:~$ sudo apt-get install ant

pc19@-H110:~$ java -version
openjdk version "11.0.20.1" 2023-08-24
OpenJDK Runtime Environment (build 11.0.20.1+1-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.20.1+1-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)

当我使用 ANT 安装时sudo apt get install ant,它会覆盖 Sun Java 安装和 OpenJdk 安装。有人知道它的解决方法吗?

为什么ant安装会覆盖java?我该如何阻止它?

答案1

包管理器不知道您的 Oracle Java 安装。该ant软件包需要 JRE,并且依赖于 或default-jre-headless软件包java8-runtime-headless。因此,安装时ant会安装默认的 JRE,即 Ubuntu 20.04 上的 OpenJDK 11(apt install ant会告诉你这一点)。 JRE 包重新配置/usr/bin/java,并且由于它位于您的jdk-20/bin目录之前,java因此运行系统 JRE 而不是您的 JRE。

为了避免安装 OpenJDK 11,您可以通过创建虚拟包来告诉您的系统安装了无头 JRE default-jre-headless;看如何使 apt 忽略已安装软件包的未实现的依赖关系?有关详细信息,请替换gstreamer0.10-plugins-gooddefault-jre-headless.

相关内容