【问题标题】:Is there an uniform way to detect the installed java on linux?有没有统一的方法来检测linux上安装的java?
【发布时间】:2011-12-14 04:01:37
【问题描述】:

有没有办法在各种不同的 Linux 发行版上检测已安装的 java? 对于 Windows,您可以使用 JAVA_HOME 或注册表,但 Linux 呢? JDK、JRE、32位还是64位也能检测到吗?

REPHRASE:如果我在 Linux 上需要 64 位 JDK,我如何以编程方式检查它是否存在并通知用户他有其他一些 java?

【问题讨论】:

  • “Linux 上安装的 Java” [原文如此] 意义不大。您不必以 root 身份在 Linux 上安装 Java,因此每个用户都可以在他的帐户中安装任意数量的 JRE(或 JDK)。从一个 JRE 切换到另一个 JRE 非常简单:export PATH=~/jdk1.6/bin:$PATH。因此,您可以让一个用户拥有一个 1.6 32 位 JVM,而另一个用户拥有一个 1.7 64 位 JVM。在正确配置的系统上,不可能知道另一个用户帐户中安装了哪个 Java。我想换个说法:“是否有一种统一的方法来检测用户帐户可以使用哪个 Java 版本?”
  • 查看this answer 上显示的代码的系统和环境选项卡,看看它们是否符合您的需要。

标签: java


【解决方案1】:

您始终可以使用java -version

这适用于所有平台,但请确保 Java 包含在系统 PATH 变量中。

【讨论】:

  • +1:正要写同样的答案。使用 grep 您应该能够从那里获取有关大多数内容的信息。
  • 此方法有效,但未显示它是 JRE 还是 JDK,32 位还是 64 位
  • @m_pGladiator 你也可以检查javac,如果它在那里,那么它是一个JDK,如果没有,它只是一个JRE。架构也可以由这两个命令确定。
【解决方案2】:

没有统一的方式。您可以使用 JAVA_HOME 环境。变量,但并非在所有机器上都定义。 但是有一种像ls /usr/java/*/bin/java | tail -1 这样的“常见”方式。

这应该在大多数情况下为您提供最新版本。

【讨论】:

    【解决方案3】:

    要查看java 命令调用的文件,请使用which java,尽管这通常只是指向真正可执行文件的符号链接,例如/usr/bin/java。据我所知,这适用于所有发行版。

    在某些 Linux 发行版上,您可以使用 update-alternatives --display java(可能使用 sudo)查看系统上安装的所有 java 可执行文件的列表,它还会告诉您符号链接指向哪一个。您可以改用--config 选项在它们之间切换。

    【讨论】:

    • update-alternatives 并非出现在所有 Linux 发行版上。它在 OpenSuse 上不可用,举个例子,我恰好现在有可用的。
    • 啊,确实。我在 Ubuntu 上,所以我确实拥有它。我将编辑我的答案以反映这一点。谢谢!
    【解决方案4】:

    您可以在终端中使用java -version 来查找一些信息。

    【讨论】:

      【解决方案5】:

      这里有很多答案可以帮助您检查是否 Java 已安装。如果是这种情况,您可以通过编程方式获取更多信息。 commons-langSystemUtils 为您提供有关实际运行的 Java 版本的许多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多