установить локальные переменные DOS из Java-кода - PullRequest
2 голосов
/ 08 июня 2011

Если "java -jar" запускается из командной строки, Есть ли способ установить локальную переменную DOS из Java-программы, чтобы после выхода из java он все еще может присутствовать в том же сеансе?

пример

(cmd)
c:\java package.Class 

/*then in program you do something like 
'System.setVariable("name","value");'
*/

// java exited

echo %name%

value

Ответы [ 3 ]

3 голосов
/ 08 июня 2011

Нет.Процессы не могут изменять среду своих родителей.

Лучшее, что вы можете сделать, это немного обмануть и выполнить одно из следующих действий:

  • Позвольте программе Java записать пакетный файл вкакое-то известное местоположение и затем вызываем его для установки переменных.Поскольку пакетные файлы выполняются в текущем cmd процессе, они могут изменять там переменные окружения.
  • Позволяет программе выводить пары имя / значение или завершать команды set, перехватывать вывод и устанавливатьпеременные сами потом.Пойдет не так, как только вы захотите или получите другой вывод, я думаю.
1 голос
/ 08 июня 2011

Можно установить переменные окружения , в соответствии с вопросом 2121795 .Однако я никогда не пробовал эти методы, поэтому не могу проверить, работают ли они.

Если они работают, помните, что установка переменной среды не вступит в силу в текущем сеансе (вам нужно будет перезапуститьокно cmd).

0 голосов
/ 08 июня 2011

Также интересен этот вопрос , в котором есть ответы, объясняющие, как использовать Preferences API для изменения реестра.Я полагаю, что вы должны иметь возможность изменять переменные окружения по этому маршруту (не проверял тщательно).

...