Есть ли инструмент Java для связи с внешним интерфейсом командной строки?

Мне нужен способ связи с внешним инструментом, который имеет интерфейс командной строки из моего приложения Java. Есть ли какой-нибудь удобный инструмент / библиотека, чтобы сделать его менее болезненным? Поверьте, я достаточно погуглил. Спасибо!


person Alexander Eliseyev    schedule 14.04.2012    source источник


Ответы (2)


Вы можете использовать Runtime.exec() для выполнения внешних команд операционной системы. Однако помните о подводных камнях его использования — обязательно прочитайте этот статья.

Если это слишком просто для ваших нужд, взгляните на ProcessBuilder. . Он доступен, начиная с Java 1.5, из примечаний к выпуску:

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

person Óscar López    schedule 14.04.2012
comment
Спасибо, но я далеко не Runtime.exec() - person Alexander Eliseyev; 14.04.2012
comment
@AlexanderEliseyev Я обновил свой ответ другой, лучшей альтернативой - person Óscar López; 14.04.2012
comment
Мне нужен способ общаться с процессом, а не запускать его. Мне нужен инструмент для облегчения обработки запросов/ответов при общении с внешним интерфейсом командной строки. - person Alexander Eliseyev; 14.04.2012

В итоге я использовал обработчик процесса (точнее, com.intellij.execution.process.OSProcessHandler) из API платформы Intellij IDEA + написал свою собственную небольшую структуру на основе команд, где каждая команда знает, как выполнять себя (записывать) и проанализировать ответ от процесса (чтение).

person Alexander Eliseyev    schedule 21.10.2012