Java 进程控制是出了名的糟糕 - 主要是由于 Java VM/JDK 类(例如 java.lang.Process)的支持不足。
我想知道,是否有任何可靠的优秀开源库。
要求是:
- 开源软件
- 启动/停止进程
- 管理标准输入和标准输出
- 跨平台(至少依次为 Linux、Windows、Solaris、HP 和 IBM)
- (可选)可重新启动
- (理想的)成熟的
Java 进程控制是出了名的糟糕 - 主要是由于 Java VM/JDK 类(例如 java.lang.Process)的支持不足。
我想知道,是否有任何可靠的优秀开源库。
要求是:
Java Service Wrapper可能是您正在寻找的。它是跨平台的,可用于将事物作为 Windows 服务启动、捕获 IO,并且通常可以完全管理任何 Java 应用程序。它的重量非常轻且设计精良。Atlassian 使用它来包装他们的产品(Jira、Bamboo 等),因此它经过了实战考验。
还有一个要求……跨平台支持杀死孤立的进程。使用java.lang.Process
(和 Apache Commons Exec),当 Java 应用程序执行硬停止(kill -9)时,无法终止外部进程。我真的很想找到一个可以更好地处理问题的库。
一种解决方案可能是将 PID 存储在磁盘上的某个资源中,然后在 Java 应用程序重新启动时终止进程。当然,这将取决于平台,所以一个好的跨平台库会很棒。