如何获取Java供应商信息

32

我该如何检索Java供应商信息,而无需编译和运行以下脚本:

import java.util.Properties;
public class test
{
    public static void main(String args[])
    {
            Properties prop = System.getProperties();
            System.out.println ("JVM Vendor : " + prop.getProperty("java.vendor") );
    }
}

我在命令行选项中找不到它。

5个回答

72
注意:以下内容适用于Oracle JVM,尚未在其他JVM上测试。(要获取有关非标准选项的详细信息,请执行java -X
您可以使用非标准的-XshowSettings标志显示所有设置,或者使用-XshowSettings:properties显示所有属性设置。
例如,如果您执行以下命令:
java -XshowSettings:properties -version

这将向您显示所有属性,其中之一是java.vendor。 不确定是否可能仅输出单个属性。


2
出现以下错误:无法识别选项:-XshowSettings:properties 无法创建Java虚拟机。 - Chandra Sekhar
我通常在Linux上运行,但刚刚尝试了Windows机器,它在那里也同样有效。设置如下:Ubuntu 12:Oracle Java 1.7.0_17。Windows 7:Oracle Java 1.7.0_25。运行java -X将为您提供有关非标准选项的详细信息,其中至少列出了来自Oracle的Java版本的-XshowSettings - DB5
1
对于Oracle Java版本,它运行得很好。有没有可能一次只获取一个属性?在Linux上,仅grep此选项将非常容易,但在Windows上则不同。 - J33nn
是的,我只用Oracle JVM测试过。我已经更新答案以反映这一点。 - DB5
@ChandraSekhar -XshowSettings 是一个非标准标志。此外,它仅存在于 Oracle JRE 1.8(Java 8)及以上版本中。(现在已经是2021年了,不支持8之前的Java版本,所以可能并不那么重要。) - Attila Csipak

5

如果您有任何正在运行的Java应用程序,“jinfo”是您的好朋友:

Usage:
jinfo [option] <pid>
    (to connect to running process)
jinfo [option] <executable <core>
    (to connect to a core file)
jinfo [option] [server_id@]<remote server IP or hostname>
    (to connect to remote debug server)

where <option> is one of:
-flag <name>         to print the value of the named VM flag
-flag [+|-]<name>    to enable or disable the named VM flag
-flag <name>=<value> to set the named VM flag to the given value
-flags               to print VM flags
-sysprops            to print Java system properties
<no option>          to print both of the above
-h | -help           to print this help message

So

jinfo -sysprops <pid of javaprocess> | grep "java.vendor = "

获取系统属性。

注意

还要注意,系统属性的值可以被覆盖!例如,如果myProperties.txt包含以下行,则java.vendor系统属性将被覆盖:

java.vendor=Acme Software Company


说实话,在我的情况下,这个属性不可能被改变 :) - J33nn

4

您可以使用以下命令

$ java -XshowSettings:properties -version 

以下是关于Linux和Windows的JAVA属性的好博客

获取JAVA属性和版本信息


1
链接已损坏 :( - actunderdc
1
这就是为什么一个好的答案应该包含相关内容,因为链接的外部资源随时可能消失。 - Stu

2

如果是JDK,请运行jvisualvm,打开VisualVM应用程序,进入“系统属性”选项卡


2
很遗憾,我需要使用控制台来完成它。 - J33nn

-1
如果是Tomcat,请前往:TOMCAT_HOME/bin/
然后执行version.sh文件(例如:./version.sh)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接