28

Java 进程控制是出了名的糟糕 - 主要是由于 Java VM/JDK 类(例如 java.lang.Process)的支持不足。

我想知道,是否有任何可靠的优秀开源库。

要求是:

  1. 开源软件
  2. 启动/停止进程
  3. 管理标准输入和标准输出
  4. 跨平台(至少依次为 Linux、Windows、Solaris、HP 和 IBM)
  5. (可选)可重新启动
  6. (理想的)成熟的
4

3 回答 3

14

Apache Commons Exec怎么样?

于 2010-11-11T22:58:11.383 回答
5

Java Service Wrapper可能是您正在寻找的。它是跨平台的,可用于将事物作为 Windows 服务启动、捕获 IO,并且通常可以完全管理任何 Java 应用程序。它的重量非常轻且设计精良。Atlassian 使用它来包装他们的产品(Jira、Bamboo 等),因此它经过了实战考验。

于 2008-10-11T05:39:47.720 回答
5

还有一个要求……跨平台支持杀死孤立的进程。使用java.lang.Process(和 Apache Commons Exec),当 Java 应用程序执行硬停止(kill -9)时,无法终止外部进程。我真的很想找到一个可以更好地处理问题的库。

一种解决方案可能是将 PID 存储在磁盘上的某个资源中,然后在 Java 应用程序重新启动时终止进程。当然,这将取决于平台,所以一个好的跨平台库会很棒。

于 2010-12-16T20:18:52.120 回答