【问题标题】:Alternatives to Runtime and ProcessBuilder (Java)Runtime 和 ProcessBuilder (Java) 的替代方案
【发布时间】:2012-08-16 13:07:04
【问题描述】:

如果有人知道如何在 java 应用程序中不使用 runtime 或 ProcessBuilder 来运行 unix 命令,我很感兴趣

【问题讨论】:

    标签: java runtime processbuilder


    【解决方案1】:

    您可以使用Apache Commons Exec 库中的DefaultExecutor 来执行命令,但它在内部使用java.lang.Runtimejava.lang.Process

    我建议您在运行时使用这个库,因为 Apache 命令执行 API 更复杂,并且提供比 Java 运行时更多的功能。它还处理退出值。

    【讨论】:

    【解决方案2】:

    有很多可能的方法;但如果不了解你的动机,我就不能称它们为可取的。

    例如,用 C 或 Perl 或任何语言编写程序并让它在套接字上侦听。然后,您的 java 程序可以连接到套接字并发送一条消息,其中包含要生成的程序名称、参数等。接收程序可以继续并生成它。

    【讨论】:

    • 是的,所以这样做的想法是创建一个响应基本命令(如 ls、pwd、cd 等)的 java 服务器应用程序。
    【解决方案3】:

    Unix命令有两种执行方式:

    1. 您可以使用java.lang.Runtimejava.lang.Process
    2. 您可以使用 JNI/JNA 访问共享库。所以你可以使用它来访问操作系统级别的命令来创建一个进程(system()exec*() 在 Unix 上)。

    不推荐使用第二种方法:很难做到正确,最终你会得到与Runtime.exec()功能完全相同的东西

    如果您只需要功能,那么您可以在Java 中再次实现这些命令。例如,要实现ls,请使用File.listFiles()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      • 2013-03-10
      • 2013-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多