В java, я пытаюсь получить доступ к двум переменным среды, которые я ранее установил на своем компьютере Mac (работает с Yosemite). Я установил значения для двух переменных: JAVA_HOME и R_HOME. При установке R_HOME я сделал это, отредактировав: ~/Library/launchacents/environment.plist.Переменные среды Mac недоступны для класса среды java
Используя терминал на mac, я могу использовать команду «printenv» и получить значения для обеих переменных.
Когда я запускаю мое приложение Java в рамках Eclipse, я могу получить значение JAVA_HOME с помощью:
System.out.println("javahome: " + System.getProperty("java.home"));
Я использовал следующий код для отображения переменных окружения, доступные для моего Java-приложения (список доступных значений что этот код выхода не включает ни JAVA_HOME, ни R_HOME):
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
System.out.format("%s=%s%n", envName, env.get(envName));
}
Мое приложение должно быть автономным, поэтому установка переменных окружения в конфигурации Eclipse, Run не будет полезным. Кроме того, мое приложение не будет знать значение R_HOME при его запуске; значение должно быть уже установлены таким образом, приложение может получить доступ к нему во время выполнения и использовать значение, чтобы запустить исполняемый файл, как:
ProcessBuilder pb = new ProcessBuilder("$R_HOME/library/Rserve/libs/Rserve");
Process p = pb.start();
Итак, мой вопрос: как может мой доступ к Java-приложение значение из Переменная среды R_HOME. Либо мне нужен новый способ установки переменной, чтобы она была доступна JVM, либо мне нужен новый метод java для вызова для доступа к значению.
У вас есть t для установки переменной при запуске приложения Java? 'java -jar app.jar -Dr.home = $ R_HOME' – andy
@andy. Спасибо за рассмотрение этого вопроса. Сценарий заключается в том, что несколько пользователей пройдут процесс установки R, установив R_HOME, а затем загрузив и установив приложение java. Приложение java будет запускаться с помощью существующего Java-приложения на компьютере пользователя. Явное приложение, которое я создаю, потребует, чтобы пользователь уже установил R_HOME перед его запуском. –