繁体   English   中英

如何获取传入Java启动的-D参数

[英]How can I obtain the -D parameters passed in to Java launch

我将某些-D环境变量作为VM选项传递给Java服务器应用程序。

我需要从应用程序中检索这些变量,但是当我使用System.getProperties()时,我得到了所有这些,以及在操作系统级别定义的所有系统属性,我对此不感兴趣。

有没有办法发现-D参数?

这在VM提供的RuntimeMXBean可用。 您可以通过getInputArguments()调用获取命令行参数列表...

import java.lang.management.ManagementFactory;

public class CmdLine {
    public static void main(String... args) {
        System.out.println(ManagementFactory.getRuntimeMXBean().getInputArguments());
    }
}

您可以使用RuntimeMXBean (Java虚拟机的运行时系统的管理接口)来获取它

RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
List<String> args = bean.getInputArguments();

请注意, getInputArguments()返回传递给Java虚拟机的输入参数,该参数不包含main方法的参数。 如果Java虚拟机没有输入参数,则此方法返回空列表。

您最好的选择是为您正在使用的属性使用特殊前缀,以便您可以将它们与其他属性区分开来: java -Dfoo.bar=x -Dfoo.bat=y -Dfoo.baz=z ... ,然后:

for(Map.Entry<String,String> kv:  System.getProperties().entrySet()) {
    if(kv.getKey().starts with("foo")) {
        System.out.println("Command line property " + kv.getKey() + "=" + kv.getValue());
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM