6

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

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 语言环境,但它始终显示为 en_US,即使我的 m/c 语言环境设置为 fr_BE。

这是上面代码的输出,它是在 Java 1.7.0_09 上编译和运行的:

zh_CN
java-版本-1.7.0_09
道具:真
getLocale-en_US

关于可能导致的任何想法?提前谢谢了。

4

1 回答 1

4

您需要在启动 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

于 2012-11-29T12:16:18.850 回答