如何设置 java 系统属性,以便在我启动 JVM 时它有效,而无需将其添加到命令行参数中



Java 1.7 中默认语言环境从操作系统获取的方式发生了变化。有一些方法可以恢复旧行为,例如在启动 JVM 实例时设置标志 -Dsun.locale.formatasdefault=true。

我想永久设置此标志,这样我就不必在每次启动 JVM 实例时在命令行参数中指定它。是否有文件或任何其他可能性可以更改 JVM 的默认设置?类似于 Eclipse.ini 文件,但用于 JVM 本身?

您可以在操作系统中设置设置环境变量JAVA_TOOL_OPTIONS。所有Java工具(java,javac等)都会选择这个变量并使用它。所以你可以例如使用

SET JAVA_TOOL_OPTIONS=-Dsun.locale.formatasdefault=true

我使用它来强制每个 JVM 的特定语言环境。

但这仅在通过 Java 工具启动应用程序时才有效。例如,如果它从调用jvm DLL的C程序启动,则不会使用它。

编辑:我刚刚测试了它,似乎在启动DLL时也会拾取JAVA_TOOLS_OPTIONS(使用WinRun4J作为启动器的Swing应用程序进行验证)

请参阅:http://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/envvars.html