Как разрешить переменные среды во время выполнения в Java - PullRequest
3 голосов
/ 11 февраля 2012

Мое java-приложение должно разрешать переменные среды в путях файлов во время выполнения, пути файлов будут указаны в файле свойств, как показано ниже, в случае окон это будет% JAVA_HOME% \ certs \ myselffign.cer, в случае unix это будет$ JAVA_HOME \ certs \ myselffign.cer

Моим java-приложениям нужно разрешить путь к этим файлам до абсолютных путей и загрузить сертификаты в хранилище доверенных сертификатов.

Есть ли способ для этого.На данный момент я проверяю os.name, и если os.name - это окна, тогда сопоставление с образцом для %% и использование system.getenv, в случае если не Windows ищет $.

Я надеюсь, что естьлучший способ сделать это

1 Ответ

4 голосов
/ 11 февраля 2012

Вы можете использовать стандартный (Java) синтаксис шаблона $ {java.home} в файлах свойств, а затем заменить его во время выполнения на значение System.getProperty("java.home");.Поэтому в вашем файле вместо:

certificate=%JAVA_HOME%\certs\myselffign.cer (Windows)
certificate=$JAVA_HOME\certs\myselffign.cer (*nix)

Просто используйте стандарт:

certificate=${java.home}/certs/myselfsign.cer

И в коде сделайте что-то вроде:

String javaHomePath = System.getProperty("java.home")l
Properties props = Properties.load( ...);
String certFilePath = props.get("certificate");
certFilePath = certFilePath.replaceAll("${java.home}", javaHomePath);

Имейте в виду, используяСтандартный синтаксис шаблона также позволяет вам использовать некоторые инструменты замены свойств с открытым исходным кодом.Как Spring PropertyResolver.Надеюсь, это поможет.

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