Мне нужен способ связи с внешним инструментом, который имеет интерфейс командной строки из моего приложения Java. Есть ли какой-нибудь удобный инструмент / библиотека, чтобы сделать его менее болезненным? Поверьте, я достаточно погуглил. Спасибо!
Есть ли инструмент Java для связи с внешним интерфейсом командной строки?
Ответы (2)
Вы можете использовать Runtime.exec() для выполнения внешних команд операционной системы. Однако помните о подводных камнях его использования — обязательно прочитайте этот статья.
Если это слишком просто для ваших нужд, взгляните на ProcessBuilder. а>. Он доступен, начиная с Java 1.5, из примечаний к выпуску:
Новый класс ProcessBuilder обеспечивает более удобный способ вызова подпроцессов, чем Runtime.exec. В частности, ProcessBuilder упрощает запуск подпроцесса с измененной средой процесса (т. е. основанной на среде родительского процесса, но с некоторыми изменениями).
Runtime.exec()
- person Alexander Eliseyev; 14.04.2012
В итоге я использовал обработчик процесса (точнее, com.intellij.execution.process.OSProcessHandler) из API платформы Intellij IDEA + написал свою собственную небольшую структуру на основе команд, где каждая команда знает, как выполнять себя (записывать) и проанализировать ответ от процесса (чтение).