【问题标题】:Which JRE am I using?我使用的是哪个 JRE?
【发布时间】:2011-12-12 09:19:35
【问题描述】:

有两种可用的 JRE。 Java VM: IBM vs. Sun.

有没有办法通过 JavaScript 或一些 Java 发出的命令知道我正在使用哪个 JRE。

【问题讨论】:

    标签: java


    【解决方案1】:

    以下命令会告诉你很多关于你的java 版本的信息,包括供应商:

    java -XshowSettings:properties -version
    

    它适用于 Windows、Mac 和 Linux。

    【讨论】:

    • 我不知道为什么人们不投票给这个更高,因为它在 Windows 和 linux 中最容易完成。你知道它是否适用于 Mac 吗?
    • 感谢您的评论,我刚刚在我的mac上尝试过,它不起作用,很好
    • 这个命令在我的 Ubuntu 系统中将 Oracle 报告为我的 Java 供应商,尽管它实际上是 OpenJDK。
    • @clapas 您能否发布您正在运行的 ubuntu 版本以及您用于安装 java 的命令?谢谢
    • @ErnestoIser Ubuntu 14.04。我通过 apt-get 安装了 Java。
    【解决方案2】:
     System.out.println(System.getProperty("java.vendor"));
     System.out.println(System.getProperty("java.vendor.url"));
     System.out.println(System.getProperty("java.version"));
    
     Sun Microsystems Inc.
     http://java.sun.com/
     1.6.0_11
    

    http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html

    【讨论】:

    • 这不能区分 Oracle JRE 和 OpenJDK - 请参阅 this answer
    【解决方案3】:
    1. 打开您的:
      • 使用 Windows 时的命令提示符
      • 终端(如果您使用的是 mac 或 Linux)
    2. 输入:

      java -version // This will check your JRE version
      javac -version // This will check your Java compiler version if you installed the JDK
      
    3. 喝杯咖啡,大功告成!如果一切安装正确,则无需将 .exe 添加到 java -version

    【讨论】:

    • 这只是获取版本,而不是 JRE 供应商
    • 这并没有说明您的 java 版本的供应商,这是问题的目的
    【解决方案4】:

    在 Linux 中:

    java -version
    

    在 Windows 中:

    java.exe -version
    

    如果您需要有关 JVM 的更多信息,您可以使用参数 -XshowSettings:properties 调用可执行文件。它将显示很多System Properties。这些属性也可以通过 Java 类中的静态方法System.getProperty(String) 访问。例如,这是一些可以获得的属性的摘录:

    $ java -XshowSettings:properties -version
    [...]
    java.specification.version = 1.7
    java.vendor = Oracle Corporation
    java.vendor.url = http://java.oracle.com/
    java.vendor.url.bug = http://bugreport.sun.com/bugreport/
    java.version = 1.7.0_95
    [...]
    

    因此,如果您需要从 Java 代码访问这些属性中的任何一个,您可以使用:

    System.getProperty("java.specification.version");
    System.getProperty("java.vendor");
    System.getProperty("java.vendor.url");
    System.getProperty("java.version");
    

    考虑到有时 供应商 不像 OracleIBM 那样清晰。例如,

    $ java version
    "1.6.0_22" Java(TM) SE Runtime Environment (build 1.6.0_22-b04) Java HotSpot(TM) Client VM (build 17.1-b03, mixed mode, sharing)
    

    HotSpot 是 Oracle 所称的 JVM 实现。 Check this list 如果供应商似乎没有显示为-version

    【讨论】:

    • java version "1.6.0_22" Java(TM) SE Runtime Environment (build 1.6.0_22-b04) Java HotSpot(TM) Client VM(build 17.1-b03,混合模式,共享)跨度>
    • 当您看到热点时,它是 Sun Java。抱歉,现在是 Oracle Java。
    【解决方案5】:

    要参考的Java系统属性System.getProperty(...)"java.runtime.name"。这将区分“OpenJDK 运行时环境”和“Java(TM) SE 运行时环境”。他们都有同一个供应商——“甲骨文公司”。

    此属性也包含在java -version 的输出中。

    【讨论】:

      【解决方案6】:

      打开命令提示符:

       Version:  java -version
       Location: where java (in Windows)
                 which java (in Unix, Linux, and Mac)
      

      在 Windows 中设置 Java 主目录:

      右击我的电脑属性高级系统设置环境变量系统变量新建。 将名称指定为 JAVA_HOME,将值指定为(例如)c:\programfiles\jdk

      选择Path并点击Edit,并在开头保留为: %JAVA_HOME%\bin;...剩下的设置在这里

      【讨论】:

      • 感谢建立 windows 环境变量和使用的二进制文件之间的连接
      • 这个问题被问到六年后,这绝对不能回答这个问题。
      【解决方案7】:

      Git Bash + Windows 10 + 与自己的 JRE 副本捆绑在一起的软件

      在您安装的软件的 jre/bin 文件夹中执行“Git Bash Here”。

      然后使用“./java.exe -version代替的“java -version”来获取 有关软件副本的信息,而不是您的 PATH 环境变量引用的副本。

      获取软件安装的版本:./java.exe -version

      JMIM@DESKTOP-JUDCNDL MINGW64 /c/DEV/PROG/EYE_DB/INST/jre/bin
      $ ./java.exe -version
      java version "1.8.0_131"
      Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
      Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
      

      在您的 PATH 变量中获取版本:java -version

      JMIM@DESKTOP-JUDCNDL MINGW64 /c/DEV/PROG/EYE_DB/INST/jre/bin
      $ java -version
      java version "10" 2018-03-20
      Java(TM) SE Runtime Environment 18.3 (build 10+46)
      Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10+46, mixed mode)
      

      至于解决原始问题并获取供应商信息:

      ./java.exe -XshowSettings:properties -version ## Software's copy
      java       -XshowSettings:properties -version ## Copy in PATH
      

      【讨论】:

        【解决方案8】:

        我遇到了一个问题,即我的 Java 应用程序在没有可辨别的证据的情况下退出工作。原来我的系统开始使用 64 位版本,而不是需要 32 位版本 (Windows Server 2012)。在 Windows 中,命令:

        Javaw -version
        

        只是让我回到命令提示符,没有任何信息。直到我尝试过

        Javaw -Version 2>x.txt
        type x.txt
        

        它给了我正在执行的是 64 位版本。归结为我的 PATH 环境变量首先找到了 64 位版本。

        【讨论】:

          【解决方案9】:

          正如您期望它使用 Javascript 知道的那样,我相信您想知道浏览器中使用的 JRE 版本。因此,您可以包含Java version tester 小程序,它可以准确地告诉您当前浏览器的版本。

          import java.applet.*;
          import java.awt.*;
          
          public class JavaVersionDisplayApplet extends Applet
          {
            private Label m_labVersionVendor;
          
            public JavaVersionDisplayApplet() // Constructor
            {
              Color colFrameBackground = Color.pink;
              this.setBackground(colFrameBackground);
              m_labVersionVendor = new Label (" Java Version: " +
                                             System.getProperty("java.version") +
                                    " from "+System.getProperty("java.vendor"));
              this.add(m_labVersionVendor);
            }
          }
          

          【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-04-11
          • 1970-01-01
          • 2016-07-27
          • 1970-01-01
          • 1970-01-01
          • 2018-01-26
          • 1970-01-01
          • 2017-03-03
          相关资源
          最近更新 更多