Java外部程序

时间:2011-06-13 20:05:47

标签: java communication external-process

我想从我的Java应用程序启动外部第三方应用程序。这个外部应用程序应该在我的java应用程序运行时一直运行。

我的Java应用程序应该能够通过stdinstdout来读取和写入此外部应用程序。

我该怎么做?

4 个答案:

答案 0 :(得分:2)

基本上,您需要Java中的多个线程,以监视外部进程的结束,并在其输入/输出/错误流周围进行混乱,以便您的主Java应用程序可以访问它。

使用Process这样的类有更多“基本”方法,但我建议使用 Apache Commons-exec ,它提供了一些处理返回值的有用工具/ O。

答案 1 :(得分:1)

在您实施启动Process的建议时,请阅读并实施所有 When Runtime.exec() won't的建议。

另请考虑使用ProcessBuilder代替Runtime.exec()(如果编码为1.5 +)。

答案 2 :(得分:0)

是ex-app本机代码还是其他Java程序?如果是原生代码,请查看http://download.oracle.com/javase/1.5.0/docs/api/java/lang/Process.htmlhttp://download.oracle.com/javase/1.5.0/docs/api/java/lang/Runtime.html

这些将允许您执行本机程序,跟踪其状态,并获取其输出并发送输入。

答案 3 :(得分:0)

这取决于外部应用程序的细节,主要是:第三方还是你可以控制的东西? ......它的内容是什么,它的功能是什么等等。

'kludgy'方法是简单地使用文件系统并让Java监视丢弃在特定位置的文件(注意妥善处理锁定的文件)。更复杂的方法是通过套接字进行通信,或者写入本地/内部托管的数据库(如hsqldb)中的数据库表。通过java.lang.Process使用输入/输出流也可能会有所帮助,具体取决于第三方应用程序。

所有再次取决于您正在与之通信的应用程序的细节。如果第三方应用程序是Excel,Java的Process类将没有帮助(在这种情况下,您可能必须按照我提到的第一种方法观察xls文件的保存目录。)