有两个品种可供选择。
有没有一种方法可以通过 JavaScript 或 Java 发出的命令来知道我在使用哪个 JRE。
Linux:
java -version
在 Windows 中:
java.exe -version
如果需要更多关于 JVM 的信息,可以使用参数 -XshowSettings:properties调用可执行文件。它将显示大量的 系统属性。这些属性也可以通过 Java 类中的静态方法 System.getProperty(String)来访问。例如,下面摘录了一些可以获得的属性:
-XshowSettings:properties
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。
-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
输入:
java -version // This will check your JRE version javac -version // This will check your Java compiler version if you installed the JDK
下面的命令将告诉您关于 java版本的大量信息,包括供应商的信息:
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位版本。
PATH
打开命令提示符:
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%\bin;
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 执行期函式库”。他们都有同一个供应商——“甲骨文公司”。
System.getProperty(...)
"java.runtime.name"
此属性也包含在 java -version的输出中。
要检查实际运行的 Java 版本,您可以使用自 Java10以来可用的 java.lang.RuntimeAPI。
java.lang.Runtime
Runtime.Version version = Runtime.version(); int javaVersion = version.feature(); // returns 17 for Java 17