【发布时间】:2011-12-12 09:19:35
【问题描述】:
有两种可用的 JRE。 Java VM: IBM vs. Sun.
有没有办法通过 JavaScript 或一些 Java 发出的命令知道我正在使用哪个 JRE。
【问题讨论】:
标签: java
有两种可用的 JRE。 Java VM: IBM vs. Sun.
有没有办法通过 JavaScript 或一些 Java 发出的命令知道我正在使用哪个 JRE。
【问题讨论】:
标签: java
以下命令会告诉你很多关于你的java 版本的信息,包括供应商:
java -XshowSettings:properties -version
它适用于 Windows、Mac 和 Linux。
【讨论】:
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
【讨论】:
在 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");
考虑到有时 供应商 不像 Oracle 或 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 实现。 Check this list 如果供应商似乎没有显示为-version。
【讨论】:
要参考的Java系统属性System.getProperty(...)是"java.runtime.name"。这将区分“OpenJDK 运行时环境”和“Java(TM) SE 运行时环境”。他们都有同一个供应商——“甲骨文公司”。
此属性也包含在java -version 的输出中。
【讨论】:
【讨论】:
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
【讨论】:
我遇到了一个问题,即我的 Java 应用程序在没有可辨别的证据的情况下退出工作。原来我的系统开始使用 64 位版本,而不是需要 32 位版本 (Windows Server 2012)。在 Windows 中,命令:
Javaw -version
只是让我回到命令提示符,没有任何信息。直到我尝试过
Javaw -Version 2>x.txt
type x.txt
它给了我正在执行的是 64 位版本。归结为我的 PATH 环境变量首先找到了 64 位版本。
【讨论】:
正如您期望它使用 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);
}
}
【讨论】: