30

如何在无需编译和运行以下脚本的情况下检索 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") );
    }
}

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

4

5 回答 5

61

注意:以下内容适用于 Oracle JVM - 未在其他人身上测试。(要获取有关非标准选项的详细信息,请执行java -X

您可以使用非标准-XshowSettings标志来显示所有设置,或者-XshowSettings:properties显示所有属性设置。

例如,如果您执行以下命令:

java -XshowSettings:properties -version

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

于 2013-08-14T11:03:32.750 回答
5

您可以使用以下命令

$ java -XshowSettings:properties -version 

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

检索 JAVA 属性和版本信息

于 2015-03-23T15:02:51.710 回答
4

如果您有任何正在运行的 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

所以

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

给你系统属性。

当心

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

java.vendor=Acme 软件公司

于 2013-08-14T11:15:40.470 回答
2

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

于 2013-08-14T10:58:24.243 回答
0

如果是 Tomcat 转到:TOMCAT_HOME/bin/

然后执行 version.sh 文件 (*eg ./version.sh)。

于 2015-02-16T08:34:44.517 回答