Pull to refresh

Comments 6

Жесть какая-то. Ладно кодировки, в Java с ними в принципе все хуже чем в том же .net, но чем env-то провинился? Почему в нативе нет доступа к окружению?

Меня заинтересовал ваш вопрос, но я что-то не нашёл пока вменяемого объяснения. Только это и соответствующий ишью в ГитХабе. Я могу ошибаться, но складывается такое ощущение, что в момент сборки образа эти свойства как будто бы запекаются в исполняемом файле.

Но я могу быть не прав, конечно. Самому интересно. Можно почитать, конечно, исходник как извлекаются свойства из окружения... но это так... мысли вслух.

Интересно, а у меня работают переменные окружения. Прокомментируйте ишшуе в гитабе с репродюсером пожалуйста — мы починим!


import java.util.Map;

public class EnvMap {
    public static void main (String[] args) {
        var filter = args.length > 0 ? args[0] : "";
        Map<String, String> env = System.getenv();
        for (String envName : env.keySet()) {
            if(envName.indexOf(filter) == -1) continue;
            System.out.format("%s=%s%n",
                              envName,
                              env.get(envName));
        }
    }
}

javac EnvMap.java
native-image EnvMap

./envmap LAL
ONECLALALA=hello world
export ONECLALALA="world"
./envmap LAL
ONECLALALA=world
Спасибо, мы обязательно попробуем как перейдем на GraalVM 21.1

Наверное речь не про переменные окружения, а про проперти. Они действительно указываются при сборке бинаря.

примерно с GraalVM 21.1 улучшена поддержка бандлов — там можно например сказать
-H:+IncludeAllLocales или там -H:DefaultLocale=de -H:IncludeLocales=fr,en

Sign up to leave a comment.