2

这里是 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)
4

1 回答 1

2

如此处所述,java.base 模块仅包含英语语言环境。要构建包含其他语言环境的 Jlink 映像,必须添加 jdk.localedata 模块。

于 2019-06-23T07:21:13.177 回答