有两种JRE可供选择。 Java VM: IBM vs Sun
有没有办法通过java脚本或一些java发出的命令知道我正在使用哪个JRE。
答案 0 :(得分:134)
以下命令将告诉您有关Java版本的大量信息,包括供应商:
java -XshowSettings:properties -version
适用于Windows和Linux
答案 1 :(得分:33)
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
答案 2 :(得分:28)
输入:
java -version // this will check your jre version
javac -version // this will check your java compiler version if you installed the jdk
答案 3 :(得分:16)
在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
答案 4 :(得分:4)
您可以从System属性对象中找到当前运行的JVM版本;请参阅System.getProperties()
的javadoc。 “java.vm.vendor”属性提供JVM供应商名称;例如
String vendor = System.getProperty("java.vm.vendor");
(如果您在沙箱中执行,安全管理器可能会阻止您阅读系统属性。如果是这种情况,那么您将非常幸运。)
如果使用-version
命令行参数,某些JVM会报告版本号,但这假定您可以运行命令,并且您知道java
命令的/ path名称。或等同物。 (这意味着有鸡和蛋的问题......)
答案 5 :(得分:1)
正如您所期望的那样使用JS,我相信您想知道在您的浏览器中使用的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);
}
}
答案 6 :(得分:1)
打开命令提示符
Version: java -version
Location: where java ( in Windows)
which java ( in Unix/Linux/Mac)
在Windows中设置Java home: 右键单击我的电脑 - >属性 - >高级系统设置 - >环境变量 - >系统变量 - >新 将名称命名为JAVA_HOME 值为(例如)c:\ programfiles \ jdk
选择路径并点击修改,保持开头为: %JAVA_HOME%\ bin; ...剩余设置在这里
答案 7 :(得分:1)
要查询的Java系统属性System.getProperty(...)
是"java.runtime.name"
。这将区分“ OpenJDK运行时环境”和“ Java(TM)SE运行时环境”。他们都有相同的供应商-“ Oracle Corporation”。
此属性也包含在java -version
的输出中。
答案 8 :(得分:0)
我遇到了一个问题,我的java应用程序退出工作时无法辨别我能找到。结果我的系统开始使用64位版本而不是32位版本(Windows Server 2012)。在Windows中,命令:
Javaw -version
刚刚把我带回命令提示符,没有任何信息。直到我试过
Javaw -Version 2>x.txt
type x.txt
它给了我正在执行的是64位版本。它归结为我的PATH
环境变量,首先找到64位版本。
答案 9 :(得分:0)
GitBash + Windows10 + 捆绑有其自己的JRE副本的软件:
在安装的软件的jre / bin文件夹中执行“ GitBash Here”。 然后使用“ java -version ”的“ ./ java.exe -version ” INSTEAD获得 有关软件副本的信息,而不是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