我使用哪个 JRE?

有两个品种可供选择。

有没有一种方法可以通过 JavaScript 或 Java 发出的命令来知道我在使用哪个 JRE。

274571 次浏览

Linux:

java -version

在 Windows 中:

java.exe -version

如果需要更多关于 JVM 的信息,可以使用参数 -XshowSettings: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");

考虑到有时候 供应商不像 神使或者 IBM那样清晰。例如,

$ 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 实现的称呼。如果供应商似乎没有显示与 -version

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

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);
}
}
 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

  1. 打开你的:
    • 命令提示符
    • 终端,如果你使用的是 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. Grab a cup of coffee and you're done! You don't need to add the .exe to the java -version if everything is installed correctly.

下面的命令将告诉您关于 java版本的大量信息,包括供应商的信息:

java -XshowSettings:properties -version

它可以在 Windows,Mac 和 Linux 上运行。

我遇到了一个问题,我的 Java 应用程序在找不到明显证据的情况下退出了工作。结果我的系统开始使用64位版本,而不是需要的32位版本(WindowsServer2012)。在 Windows 中,命令:

Javaw -version

没有任何信息就把我带回了命令提示符。直到我尝试

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

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

打开命令提示符:

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

在 Windows 中设置 Java:

右键单击 我的电脑 & rarr; 物业 & rarr; 高级系统设置 & rarr; 环境变量 & rarr; 系统变数 & rarr; 新的。 将名称设置为 JAVA _ HOME,值设置为(例如) c: Programfiles jdk

选择 路径并单击 Edit,并将其保持在开始部分,如下所示: %JAVA_HOME%\bin;... 剩下的设置放在这里

JAVA_HOME

Git Bash + 视窗10 + 来自 绑定了自己的 JRE 副本的软件:

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

然后使用“ Java-version”的“ ./java.exe-version取而代之来获取 软件副本的信息,而不是你的 路径环境变量所引用的副本。

获取软件安装版本: ./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

要查询的 Java 系统属性 System.getProperty(...)"java.runtime.name"。这将区分“ OpenJDK 执行期函式库”和“ Java (TM) SE 执行期函式库”。他们都有同一个供应商——“甲骨文公司”。

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

要检查实际运行的 Java 版本,您可以使用自 Java10以来可用的 java.lang.RuntimeAPI。

Runtime.Version version = Runtime.version();
int javaVersion = version.feature();
// returns 17 for Java 17