GraalVM native-image Java Проблема локали i18n - PullRequest
0 голосов
/ 04 мая 2020

Я пытаюсь сделать программу, используя 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, но я тестировал предыдущие версии с таким же поведением.

Я в вашем распоряжении, если необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...