我想使用Java 8的java.locale.providers属性获取我的系统区域设置。我的系统区域设置是英国,但此代码每次都返回美国。我做错了什么?
String localeProvidersList = System.getProperty("java.locale.providers", "HOST");
System.out.println(Locale.getDefault().getCountry());
答案 0 :(得分:1)
阅读the documentation,以下内容似乎相关:
使用以下方法检索默认语言环境:
public static Locale getDefault()
应用程序的默认语言环境以三种方式确定。第一, 除非您明确更改了默认值
getDefault()
方法 返回最初由Java虚拟机确定的语言环境 (JVM)首次加载时。也就是说,JVM确定默认语言环境 来自主机环境。主机环境的语言环境由 主机操作系统和在该系统上建立的用户首选项。其次,在某些Java运行时实现上,应用程序用户可以 通过提供此信息来覆盖主机的默认语言环境 命令行设置
user.language
,user.country
和user.variant
系统属性。⋮
第三,您的应用程序可以调用
setDefault(Locale aLocale)
方法。该setDefault(Locale aLocale)
方法可让您的应用程序在系统范围内设置 资源。使用此方法设置默认语言环境后,将进行后续调用 到Locale.getDefault()
将返回新设置的区域设置。
因此,假设没有调用Locale.setDefault()
,我会通过使用以下内容排除覆盖“hosts默认语言环境”的任何内容:
public class Default {
public static void main(String[] args) {
System.out.println(System.getProperty("user.language"));
System.out.println(System.getProperty("user.country"));
System.out.println(System.getProperty("user.variant"));
}
}
如果这没有提供任何关于你为什么要获得美国语言环境的建议,我必须假设你的计算机没有像你期望的那样设置其语言环境,否则它无法分辨JVM正确。