Комментарии 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 улучшена поддержка бандлов — там можно например сказать
-H:+IncludeAllLocales
или там -H:DefaultLocale=de -H:IncludeLocales=fr,en
Как мы запустили программу на Java без JavaVM