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)

Вы можете получить доступ к этому объекту из сеанса...

Другие вопросы по тегам