Java Runtime.exec работает проблема Java - PullRequest
0 голосов
/ 23 августа 2010

У меня есть простое серверное приложение, которое я хотел бы запустить в фоновом режиме. У меня работает следующая строка:

Runtime.getRuntime().exec("cmd /c start java -jar ..\\server\\server.jar -Dlog4j.configuration=file:src\\test\\resources\\log4j.properties -filename src\\test\\resources\\server.properties");

Но оно отображает окно cmd, и я не могу его уничтожить. Поэтому я хотел бы использовать

Runtime.getRuntime().exec("java -jar ..\\server\\server.jar -Dlog4j.configuration=file:src\\test\\resources\\log4j.properties -filename src\\test\\resources\\scIntegration.properties");

Но он просто не подключается к серверу. Так почему же это так?

Смежный вопрос. Как мне закончить процесс? Это сервер, который "не заканчивается". Поэтому я должен убить его и предположить, что выполнение только команды java может быть уничтожено, но с cmd мне не повезло.

Ответы [ 3 ]

2 голосов
/ 23 августа 2010

Вы должны разделить вашу команду на массив, в котором первый аргумент является фактической командой для выполнения, а все остальные являются аргументами, подобными команде:

Runtime.getRuntime().exec(new String[] {"/usr/bin/java", "-jar", "..\\server\\server.jar" ...});
0 голосов
/ 24 августа 2010

Сервер выводит что-то на стандартный вывод, и в сокращенной версии команды у него не было места для вывода, поэтому он застрял при попытке вывода некоторых данных.Решение состоит в том, чтобы направить стандартный вывод, например, в какой-нибудь файл.

0 голосов
/ 23 августа 2010

Попробуйте использовать абсолютный путь к Java-программе.

Для уничтожения: exec() возвращает java.lang.Process, который вы должны быть в состоянии уничтожить. Если нет, вы должны реализовать какой-либо тип обратного вызова для выключения вашего сервера, например, прослушивание определенного прота для команды выключения.

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