Я пытаюсь войти в свой JBoss server с помощью Java и перезагрузить его.
Я пробовал следующий код:
ProcessBuilder processBuilder = new ProcessBuilder("C:\\jboss\\jboss-eap-6.4\\bin\\jboss-cli.bat -c --controller=10.10.10.10 --user=user --password=pass --command=:reload");
processBuilder.inheritIO();
Process p = processBuilder.start();
try {
p.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
но я получаю эту ошибку:
CreateProcess error=2, The system cannot find the file specified
У меня есть следующие настройки для переменных среды:
1. JAVA_HOME- C:\Program Files\Java\jdk1.8.0_121
2. JBOSS_HOME-C:\jboss\jboss-eap-6.4
3. Bat файл присутствует в каталоге
4. Я могу войти и перезагрузить его вручную.
У меня здесь нет идей.
Вы имеете в виду что-то вроде этого - ProcessBuilder processBuilder = new ProcessBuilder ("C: \\ jboss \\ jboss-eap-6.4 \\ bin \\ jboss-cli.bat", "-c", "--controller = 10.10 .10.10 "," --user = user "," --password = pass "," - command =: reload "); .... это тоже не работает и вызывает ту же ошибку
Да, я имел в виду именно это. Возможно, Java не знает, как выполнить файл .bat, вы можете попробовать добавить cmd и /C в начало списка аргументов, что должно заставить cmd выполнить пакетный сценарий с предоставленными аргументами.




В итоге я использовал
Runtime.getRuntime().exec()
вместо
processBuilder()
Не передавайте один
StringконструкторуProcessBuilder, передавайте емуListили массив токенов, состоящий из пути команды и ее различных аргументов.