仅从命令行获取系统属性列表

Get list of system properties from command line only

这类似于一个非常基本的问题,我试图找到仅从命令行传递给 java 程序的系统属性列表。例如,运行

java -Dsome.property=value -Dother.property=value2

我正在尝试获取仅包含这些属性的列表。忽略示例中的特定 属性 名称,实际的命令行参数将被任意命名,因此为我需要的每个 属性 显式调用 System.getProperty("some.property") 是不可行的。

System.getProperties() returns 许多我不感兴趣的属性。是否可以区分启动程序时在命令行上设置的属性与启动程序时设置的属性来自别处?

Is it possible to differentiate between properties set on the command line when starting the program vs those that come from elsewhere?

据我所知,这是不支持的。当您的代码正在执行时,命令行系统属性已经与所有其他属性一起修改。

根据您真正想要完成的事情,要考虑的一件事可能是不要将它们设置为命令行系统属性,而是将它们作为参数传递给您的程序,以便您可以评估它们,然后将它们设置为系统在执行其他大部分代码之前,main 方法中的属性。

希望对您有所帮助。