Передайте аргументы и запустите файл .cmd в Windows, используя Java - PullRequest
0 голосов
/ 27 апреля 2018

Я хочу запустить и передать аргументы в файл ".cmd", используя программу Java. Я проверил существующие решения, но в моем случае ничего не работает.

Из командной строки я запускаю команду ниже после входа в каталог C:/users/project/solr/bin

solr.cmd -s "C:users/github/example/solr-config"

Итак, solr.cmd получает аргументы из другого каталога, а затем запускает экземпляр solr.

Я пробовал это, но я не уверен, как предоставить параметры для Runtime.getRuntime():

     Runtime run = Runtime.getRuntime();

     Process p = null;  

     String cmd = "cmd /c start C:/users/project/solr/bin C:users/github/example/solr-config";
     Process pr = run.exec(cmd);

Я перешел по этой ссылке: Как запустить пакетный файл из моего Java-приложения?

Может кто-нибудь, пожалуйста, помогите мне в этом.

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Я решил это, изменив cmd, так как solr.cmd ожидает -s также в качестве аргумента:

String cmd = "cmd /c start C:/users/project/solr/bin/solr.cmd -s C:users/github/example/solr-config;
0 голосов
/ 27 апреля 2018

Есть разница между "это не работает" и "это ничего не показывает". Согласно документации:

По умолчанию созданный подпроцесс не имеет собственного терминала или консоли. Все его стандартные операции ввода-вывода (т.е. операции stdin, stdout, stderr) будут перенаправлены в родительский процесс, где к ним можно получить доступ через потоки, полученные с помощью методов getOutputStream (), getInputStream () и getErrorStream (). Родительский процесс использует эти потоки для подачи входных данных и получения выходных данных из подпроцесса. Поскольку некоторые собственные платформы предоставляют ограниченный размер буфера только для стандартных входных и выходных потоков, невозможность оперативной записи входного потока или чтения выходного потока подпроцесса может привести к блокировке или даже взаимной блокировке подпроцесса.

Если вы хотите получить данные, которые ваш процесс мог распечатать на стандартном вводе / выводе, вам придется прочитать их из вышеупомянутых потоков.

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