以下代码将有助于说明我的问题:
import java.util.Locale;
import java.text.*;
public class LocaleTest {
public static void main(String[] args) {
System.out.println(Locale.getDefault());
System.out.println("java-version-" +System.getProperty("java.version"));
System.setProperty("sun.locale.formatasdefault","true");
System.out.println("prop:" +System.getProperty("sun.locale.formatasdefault"));
System.out.println("getLocale-" +Locale.getDefault());
}
}
众所周知,Java 7 中的 Locale.getDefault() 中存在错误。但是,根据Oracle的建议,我将系统属性"sun.locale.formatasdefault"设置为true。即使我现在正在获取我的 m/c 区域设置,即使我的 m/c 区域设置设置为 fr_BE,它也始终显示为en_US。
下面是上面代码的输出,它是在Java 1.7.0_09上编译和运行的:
en_USJava版本-1.7.0_09道具:真getLocale-en_US
关于可能导致这种情况的任何想法?提前非常感谢。
您需要在启动 JVM 之前设置该系统属性。您可以通过命令行参数执行此操作:
java -Dsun.locale.formatasdefault=true TargetClass
或者在您无法控制 JVM 启动的环境中,您可以通过环境变量进行设置_JAVA_OPTIONS
:
*尼克斯
export _JAVA_OPTIONS=-Dsun.locale.formatasdefault=true
窗户
SET _JAVA_OPTIONS=-Dsun.locale.formatasdefault=true
在 Windows 中,如果希望更改不仅应用于该 CMD,而且应用于系统范围,请创建一个 Windows 系统变量JAVA_TOOL_OPTIONS