下面是一个SSCCE:
public class Main {
public static void main(String[] args) {
Locale item = Locale.FRANCE;
System.out.println("Locale: "+item+" displayed: "+item.getDisplayLanguage(Locale.GERMANY));
}
}在编译和运行它时,它会正确显示
Locale: fr_FR displayed: Französisch但是如果我现在通过jlink创建一个自定义的运行时镜像,并用它运行它,我会得到:
Locale: fr_FR displayed: French无论使用哪种语言环境,似乎都会回到英语语言环境。也许我需要一个额外的模块来完成这个任务?运行时镜像的生成方式如下:
jlink --module-path "..." --add-modules=java.desktop,java.logging,javafx.controls,javafx.graphics,javafx.fxml,javafx.base,javafx.media --output image我的JDK版本:
$ java --version
java 11.0.2 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)发布于 2019-06-23 15:21:13
如here所述,java.base模块只包含英语区域设置。要构建一个同时包含其他语言环境的Jlink镜像,必须添加jdk.localedata模块。
https://stackoverflow.com/questions/56313644
复制相似问题