8

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

4

3 回答 3

5

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

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

于 2012-08-16T13:14:43.647 回答
0

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

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

于 2012-08-16T13:24:07.773 回答
-1

Unix命令有两种执行方式:

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

不推荐第二种方法:很难做到正确,最终你会得到与Runtime.exec()

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

于 2012-08-16T13:55:12.743 回答