GraalVM本机图像Java i18n语言环境问题

时间:2020-05-04 04:37:56

标签: java internationalization graalvm graalvm-native-image

我尝试使用Locale编写程序。我想用GraalVM本地编译该程序,但是Locale在本地编译后没有相同的行为。

我成功使用以下程序隔离了问题:

import java.text.NumberFormat;
import java.util.Locale;
import java.util.Currency;

public class HelloWorld {

  public static void main(String[] args) {
    NumberFormat gbNumberFormat = NumberFormat.getCurrencyInstance(new Locale("en", "GB"));
    gbNumberFormat.setCurrency(Currency.getInstance("USD"));
    System.out.println(gbNumberFormat.format(1337));

    NumberFormat usNumberFormat = NumberFormat.getCurrencyInstance(new Locale("en", "US"));
    usNumberFormat.setCurrency(Currency.getInstance("USD"));
    System.out.println(usNumberFormat.format(1337));
  }

}

我可以用Java编译该程序:

javac -d out/ HelloWorld.java

(从外部目录)执行它:

java HelloWorld

结果是:

US$1,337.00
$1,337.00

我现在可以制作本机映像并启动它:

native-image -cp out/ HelloWorld
./helloworld

结果不一样:

$1,337.00
$1,337.00

好像我在纯模式下使用i18n遇到问题。我真的不明白为什么。 我正在使用graalvm-ce-java11-20.0.0,但是我已对具有相同行为的早期版本进行了测试。

如有必要,我随时为您服务。

0 个答案:

没有答案