Предоставление переменных среды в качестве аргументов - PullRequest
2 голосов
/ 05 января 2012

У меня есть файл JAR, который получает аргументы из командной строки, и я хочу дать параметр, который содержит переменную среды. Примерно так:

java -jar MyDev.jar -f %PROJECT_HOME%/src/test

Но в вышеприведенном случае программа создает каталог с именем %PROJECT_HOME%, однако я хочу, чтобы значение PROJECT_HOME в системе было /home/jack path. И программа должна следовать /home/jack/src/test, а не %PROJECT_HOME%/src/test путь.

Как я могу это сделать?

Ответы [ 3 ]

4 голосов
/ 05 января 2012

Вы запускаете это в оболочке Unix? Если это так, я подозреваю, что вы просто хотите:

java -jar MyDev.jar -f ${PROJECT_HOME}/src/test

Использование % - это способ указания переменных среды в Windows, который не соответствует домашнему каталогу /home/jack ...

2 голосов
/ 05 января 2012

Компонентом, ответственным за подстановку переменных среды, является процессор оболочки / командной строки (cmd.exe в Windows).

Я написал следующий main метод:

public static void main(String[] args) {
    System.out.println(args[0]);
}

Когда я передаю "% PATH%" в качестве аргумента, при запуске его из Eclipse выводится %PATH%. Запуск его из командной строки выводит фактическую переменную окружения пути.

Обратите внимание, что вы можете получить доступ к переменным окружения из вашего кода Java, используя System.getenv(). Например, System.out.println(System.getenv("PATH")) выводит фактическую переменную пути как из Eclipse, так и из командной строки.

0 голосов
/ 05 января 2012

Одной из наиболее вероятных причин этого может быть то, что переменная PROJECT_HOME не определена или имеет имя с ошибкой. Следовательно, если вы еще этого не сделали, вы должны сделать echo %PROJECT_HOME% прямо перед запуском Java-программы, чтобы убедиться, что переменная определена.

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