Уже существует 7-летний вопрос с аналогичным названием, но нет принятого ответа, поэтому повторная отправка, поскольку мой вопрос содержит дополнительные сведения.
7-летний вопрос: Запуск пакетного файла с Java, зарегистрированного как WindowsСервис, использующий Procrun
Мой вопрос:
У меня следующий класс Java:
public static void main(String[] args) {
ProcessBuilder processBuilder = new ProcessBuilder(new String[] {"C:\\Work\\test.bat"});
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
int exitVal = process.waitFor();
}
, когда он запускается непосредственно из затмения,test.bat
успешно выполнен.Однако, когда он запускается из службы, test.bat
не выполняется.
Я установил jar как службу Windows, используя procrun.Также, чтобы проверить, правильно ли установлена служба.Я сделал это:
public static void main(String[] args)
{
try {
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
File file = new File("C:\\Work\\temp.txt");
FileUtils.writeStringToFile(file, "hello world "+formatter.format(calendar.getTime()), "UTF-8", false);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
, и этот блок кода выполняется из службы без каких-либо проблем.Просто test.bat не выполняется.
Разрешено ли ProcessBuilder
от procrun?
РЕДАКТИРОВАТЬ
My test.bat
:
start "" cmd /c "echo Hello world!&echo(&pause"