【问题标题】:Java - why are 2 versions shown?Java - 为什么显示 2 个版本?
【发布时间】:2010-10-24 21:09:59
【问题描述】:

我想知道我的 ubuntu 系统上安装了哪个版本的 java。

java -version 命令显示:

cmdprompt$ java -version

java版本“1.6.0_20”

Java(TM) SE 运行时环境(构建 1.6.0_20-b02)

Java HotSpot(TM) 客户端虚拟机(构建 16.3-b01,混合模式,共享)

但是以下 cmd 显示安装了 2 个 Java 版本?这些是什么?

cmdprompt$ ls -l $(type -path -all java)

lrwxrwxrwx 1 root root 22 2010-02-28 14:21 /usr/bin/java -> /etc/alternatives/java

lrwxrwxrwx 1 root root 15 2010-06-29 22:36 /usr/lib/jvm/java-6-sun/bin/java -> ../jre/bin/java

我如何确保只安装一个版本的 JAVA - 这样就不会有构建冲突?

【问题讨论】:

  • AFAIK,这与编程无关。无论如何,ls -l $(type -path -all java) 中的两行并不意味着您有两个 Java 版本。

标签: java


【解决方案1】:

alternatives 目录包含指向您首选替代方案的链接。 (这使得在首选版本之间切换非常容易。)

在我看来,您似乎只安装了一个版本,并且该版本由 /etc/alternatives/java 指向。

我如何确保只安装一个版本的 JAVA - 这样就不会有构建冲突?

嗯,首先,我怀疑你会遇到构建冲突的麻烦。但是为了确保您只安装了一个版本的 java,您可以列出所有已安装的包,这些包称为 java 的东西,如下所示:

dpkg --get-selections | grep -i java

然后使用apt-get remove pkgname 删除您不想安装的软件包。

【讨论】:

    【解决方案2】:

    Ubuntu 通过一个常用技巧(即符号链接)支持几种不同的 Java 安装方式。如果您输入which java,它会告诉您“java”解析为“/usr/bin/java”(应该安装Java),这又指向/etc/alternatives/java,这是一个自动更新的符号链接通过update-alternatives 命令。例如,此命令可用于在 Sun 的 Java 实现和 Java 的 Open JDK 版本之间切换。不会有任何冲突,因为它们各自占据不同的位置并具有不同的路径,并且符号链接(系统期望在其中找到 Java)可以轻松更新以切换到要使用的任何一个。

    您可以使用update-alternatives 查看当前选择的Java 版本。例如:

    sudo update-alternatives -l
    

    上面的命令会告诉你为各种工具选择了哪些“替代品”。

    【讨论】:

      【解决方案3】:

      我一直安装了大约十几个版本的 java,而且我从来没有遇到过构建冲突。一次构建应该只使用一个 Java 版本。 Java 6 的所有版本基本上都兼容,因此即使混合使用它们也不会出现问题。

      如果您尝试在 Java 5.0 编译器中使用使用 Java 6 编译的类,您会收到一个错误,这表明您有版本问题。但是,如果您设置“-target 1.5”选项,您也可以混合使用 Java 5.0 和 6 编译器。

      简而言之,除非您知道自己有问题,否则我不会担心。

      【讨论】:

        猜你喜欢
        • 2021-04-10
        • 1970-01-01
        • 2019-05-05
        • 1970-01-01
        • 2020-07-21
        • 2014-11-06
        • 1970-01-01
        • 2010-10-29
        • 2011-01-31
        相关资源
        最近更新 更多