Java внешняя программа - PullRequest
       17

Java внешняя программа

1 голос
/ 14 июня 2011

Я хочу запустить внешнее стороннее приложение из моего Java-приложения.Это внешнее приложение должно работать все время, пока работает мое Java-приложение.

Время от времени (это зависит от взаимодействия с пользователем), мое java-приложение должно иметь возможность читать и писать в это внешнее приложение через stdin и stdout.

.что?

Ответы [ 4 ]

2 голосов
/ 14 июня 2011

По сути, вам понадобятся несколько потоков в Java, которые следят за завершением внешнего процесса и перемешивают его потоки ввода / вывода / ошибок, чтобы ваше основное приложение Java имело к нему доступ.

Естьболее «базовые» способы сделать это с классами, такими как Process, но я бы предложил Apache Commons-exec , который предоставляет некоторые полезные инструменты для обработки возвращаемых значений и ввода / вывода.

1 голос
/ 14 июня 2011

Поскольку вы реализуете предложение запустить Process, прочитайте и выполните все рекомендации Когда Runtime.exec () не будет .

Также рассмотрите возможность использования ProcessBuilder вместо Runtime.exec() (при кодировании 1,5 +).

0 голосов
/ 14 июня 2011

Это зависит от специфики внешнего приложения, в основном: от стороннего производителя или это то, что вы контролируете? ... с чем оно построено, каковы его возможности и т. Д.

Метод 'kludgy' будет состоять в том, чтобы просто использовать файловую систему и заставить Java наблюдать за файлами, отброшенными в определенном месте (заботясь о правильной обработке заблокированных файлов).Более сложным методом будет обмен данными через сокеты или запись в таблицу базы данных в локальной / внутренней базе данных, такой как hsqldb.Использование входных / выходных потоков через java.lang. Процесс также может помочь, в зависимости от стороннего приложения.

Но опять же все зависит от специфики приложения.вы общаетесь сКласс Process Java не поможет, если сторонним приложением будет Excel (в этом случае вам, вероятно, придется просматривать каталог сохранения файлов xls в соответствии с первым упомянутым мной методом).

0 голосов
/ 14 июня 2011

Это нативный код бывшего приложения или другая Java-программа? Если это нативный код, посмотрите на http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Process.html и http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Runtime.html

Они позволят вам выполнить собственную программу, отслеживать ее состояние, получать ее выходные данные и отправлять входные данные.

...