Java, выполнить EXE из WAR в коде Java
В моей войне у меня есть файл exe
в WEB-INF\classes\
Как я могу выполнить этот файл в коде Java (Как я могу указать путь к этому файлу)?
command = " ? ";
Process x = p.exec(command);
3 ответа
Это плохая идея. Просто представьте, что ваш пакет.war должен работать практически на любом сервере (".war is platform Independend"), а ваш файл.exe скомпилирован только для одной архитектуры.
Лучше выполнить ваш.exe как внешнюю программу только для отдельной независимой от платформы и платформо-зависимой части. Затем в Java вы можете протестировать операционную систему и на этом основании запустить нужную внешнюю программу.
Прочитайте эту ссылку с похожим вопросом.
Следующий подход может работать:
1) Подготовьте полный путь к вашему исполняемому файлу:
ServletContext context = getContext();
String fullPath = context.getRealPath("/WEB-INF/classes/executable");
2) Выполните так, как вы это обычно делаете:
String[] cmd = { fullPath /*[...] arguments */};
Process p = Runtime.getRuntime().exec(cmd);
p.waitFor();
Это упрощенный пример; Вы также можете прочитать больше о ProcessBuilder.
Лучший способ найти реальное местоположение файла в веб-приложении - использовать ServletContext.getRealPath (см. http://docs.oracle.com/javaee/6/api/javax/servlet/ServletContext.html)
Вы можете получить доступ к этому объекту из сеанса...