以下代码将有助于说明我的问题:
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());
}
}
Run Code Online (Sandbox Code Playgroud)
我们知道,在Java 7中,Locale.getDefault()中存在错误.但是,正如Oracle所建议的那样,我将系统属性"sun.locale.formatasdefault"设置为true.即使我现在正在获取我的m/c Locale,它仍然显示为en_US,即使我的m/c Locale设置为fr_BE.
以下是上述代码的输出,它是在Java 1.7.0_09上编译和运行的:
en_US java-version-1.7.0_09 prop:true getLocale-en_US
关于可能导致什么的任何想法?提前谢谢了.
您需要在启动 JVM之前设置该系统属性。您可以通过命令行参数执行此操作:
java -Dsun.locale.formatasdefault=true TargetClass
Run Code Online (Sandbox Code Playgroud)
或者在您无法控制 JVM 启动的环境中,您可以通过_JAVA_OPTIONS环境变量进行设置:
*尼克斯
export _JAVA_OPTIONS=-Dsun.locale.formatasdefault=true
Run Code Online (Sandbox Code Playgroud)视窗
SET _JAVA_OPTIONS=-Dsun.locale.formatasdefault=true
Run Code Online (Sandbox Code Playgroud)在 Windows 中,如果您希望更改不仅应用于该 CMD,而且应用于整个系统,您可以创建一个 Windows 系统变量 JAVA_TOOL_OPTIONS
| 归档时间: |
|
| 查看次数: |
1742 次 |
| 最近记录: |