在 Java 7 中将 sun.locale.formatasdefault 设置为 true



以下代码将有助于说明我的问题:

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

最新更新