VM参数:正确且以编程方式检索

时间:2012-07-03 22:18:11

标签: java jvm arguments

我正在尝试以编程方式从Java应用程序中检索VM参数。


在做了一些研究之后,我发现了一个看似完美的解决方案:

ManagementFactory.getRuntimeMXBean().getInputArguments();

但是,当参数的内容包含空格字符时,参数将被拆分,并且只有列表中存在该空格字符。

使用示例VM参数-Xmx1024mb -javaagent:"C:/Users/Thompson Main/Documents/app.jar",将返回以下列表:

[0] -> -Xmx1024mb
[1] -> -javaagent:C:/Users/Thompson
[2] -> Main/Documents/app.jar
[3] -> -Dfile.encoding=Cp1252

由于包含不可避免的空间,第二个VM参数被切断,我不能假设我的所有用户都缺少文件路径中的空格字符。在我看来,这个bug导致ManagementFactory和RuntimeMXBean无用。


我做了更多的研究,但是我无法找到一种替代的,成功的方法来完整地在Java 6中检索VM参数(感谢Jean-Philippe让我知道它在Java 7中有效)。 / p>

从应用程序中获取VM参数的另一种方法是什么?

1 个答案:

答案 0 :(得分:4)

这是一个JDK错误,已在JDK 7中更正:RuntimeMXBean.getInputArguments() doesn't handle arguments with spaces properly

良好的解决方案:升级到Java 7。

丑陋的解决方案:重建参数,但它会变得很糟糕:(