Вот код Java, который я использую для запуска службы, но как только программа Java выходит из службы Windows, он начался и завершил работу, и это проблема, которую я пытаюсь решить.
Код: Выделить всё
String[] startScript = { "C:/test.exe", "/c", "sc", "start", "Test" };
Runtime.getRuntime().exec(startScript);
// java program exits here but service won't keep running
Код: Выделить всё
String[] stopScript = { "C:/test.exe", "/c", "sc", "stop", "Test" };
Runtime.getRuntime().exec(stopScript);
Как я могу сохранить работу «test.exe» после выхода из программы Java?
ОБНОВЛЕНИЕ: Проблема была решена благодаря предоставленным комментариям. Мне пришлось изменить команды запуска и остановки на (обратите внимание: эти команды работают только с настоящей службой Windows)...
Код: Выделить всё
// start from java
String[] startScript = { "sc", "start", "Test" };
Runtime.getRuntime().exec(startScript);
// stop from java
String[] stopScript = { "sc", "stop", "Test" };
Runtime.getRuntime().exec(stopScript);
Однако у меня возникла одна небольшая проблема при остановке службы. Служба была установлена с помощью NSSM (поскольку у меня возникли проблемы при установке службы с помощью команд Windows) и запускается под ней как дочерний процесс. Когда я останавливаю службу тестирования, она останавливается нормально, но родительская служба NSSM продолжает работать, что не позволяет мне снова запустить службу тестирования.
Подробнее здесь: https://stackoverflow.com/questions/791 ... gram-exits
Мобильная версия