[英]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.