У меня есть внешняя программа, которую я запускаю. по какой-то причине владелец кода не предоставил мне код или хорошую документацию, я знаю, как запустить этот код, но он был написан оригинально для выполнения из командной строки, а не из JAVA. Влияние на меня заключается в том, что это приложение использует переменную ENV и реле по ее значению (путь на компьютере для вывода). Я хочу изменить это значение, как это можно сделать, не запуская его из пакетного файла?Создайте переменную среды программно
ответ
В командной строке сначала установить требуемую переменную
set FILELOCATION=<PATH TO FILE>
java MyProgram
В этом случае FILELOCATION
будет доступен до закрытия программы.
Не заданная переменная будет зависеть от ОС.
Для Linux или Solaris вы можете сделать:
export FILELOCATION=<PATH TO FILE>
В случае, если вы ищете параметры командной строки, то вы можете использовать что-то вроде этого:
java MyProgram PathToFile
Существует лучший способ сделать это java -DFILELOCATION=<PATH_TO_FILE> MyProgram
Редактировать: Согласно комментарии.
Просто используйте ProcessBuilder для установки переменной ENV в Java-коде.
привет прежде всего, 10x для быстрого ответа. second: моя программа не запускается с консоли, я вызываю статический метод в объекте, который существует в файле JAR, который я получил, и внутри этого статического метода он передает переменную env. моя программа также вызывается другой java-программой, и я не хочу ретранслировать по внешнему набору переменных. Я хочу, чтобы в моем java-коде существовала переменная, если ее нет - добавьте ее и установите ее значение для моего значения, все используя java-код и не вызывая внешние инструменты, если это возможно ... – Hovav
обновил мой пост – mprabhat
, как это можно сделать, не запуская его из пакетного файла
Просто установите глобальной переменной окружения. Все новые процессы увидят его (исключая эту наследующую среду из старого родительского процесса).
См. Также How do I set environment variables from Java?. Это отвечает за вопрос. Который не соответствует телу вопроса, кстати. ;)
См. this post. Обычно это помогает сначала начать поиск здесь, прежде чем отправлять вопрос. Если вы уже пробовали это решение, это действительно помогает помощникам сообщить им, что вы его попробовали, и что пошло не так.
Я предполагаю, что вы выполняете эту программу, используя один из методов .exec() в Java-коде для создания Process.
Обратите внимание, что некоторые из этих методов позволяют передавать переменные среды в процесс, который вы создаете, например exec(String[] cmd, String[] envp).
В качестве альтернативы, карта, возвращаемая ProcessBuilder.environment(), может управляться с тем же эффектом.
- 1. Программно добавление каталога в переменную среды Windows PATH
- 2. Как настроить переменную среды программно для текущего процесса в Qt?
- 3. Как программно установить постоянную переменную среды в Linux?
- 4. Как настроить переменную среды программно в Jenkins/Hudson?
- 5. Программно модифицировать переменные среды?
- 6. Удалить переменную среды прокси
- 7. Как установить переменную среды?
- 8. Создайте локальную переменную Html программно с помощью Angular2
- 9. Создайте заказ программно - mage.php
- 10. Программно создайте новый объект
- 11. Программно создайте список избранного
- 12. Программно создайте фотоальбомы PDF
- 13. Создайте прогресс, доступный программно
- 14. Программно создайте packages.config
- 15. Создайте объект LayerDrawable программно
- 16. Создайте виджет программно
- 17. Log4Net - Создайте Smtpappender программно
- 18. Программно создайте JSF HtmlOutputLink
- 19. Создайте клиент WCF программно
- 20. Создайте многострочный EditText программно
- 21. Создайте шаблон кнопки программно
- 22. Создайте диаграмму GMF программно
- 23. Создайте UINavigationController программно
- 24. Wordpress, создайте пользователя программно
- 25. Создайте tablelayout программно
- 26. Создайте окно HUD программно
- 27. Программно создайте UITextFields
- 28. Создайте пользовательский UISearchDisplayController программно
- 29. Программно создайте навигационный ящик
- 30. Программно создайте fastreport.net TableObject
Как вы действительно запускаете эту программу? Из командной строки или из некоторого кода оболочки java? Название вопроса и его тело в настоящий момент являются взаимоисключающими. – Vadzim
Я вызываю его из другого приложения Java, используя обычный вызов метода java. – Hovav