【问题标题】:How To Execute Native Commands In Java?如何在 Java 中执行本机命令?
【发布时间】:2012-01-01 16:30:17
【问题描述】:

我非常了解如何通过 Runtime.getRuntime().exec(command) 执行命令并处理输出,但这非常有限。

以 Windows 为例(特别是 Vista,但这无关紧要)。

如何通过 Java 中的 ProcessBuilder(或任何类)执行诸如“echo”、“cd”、“md”、“rd”之类的命令以及在 cmd.exe 内部的任何其他命令?

【问题讨论】:

  • ProcessBuilder 是正确的类 (download.oracle.com/javase/7/docs/api/java/lang/…)。有什么具体的事情你在完成时遇到了困难吗?
  • 值得注意的是,您列出的每个命令都可以通过 Java 库完成。我知道您可能没有所需的所有功能,但我建议您尽可能使用 Java 库,仅在必要时使用 ProcessBuilder。
  • @glowcoder 当然可以。它们只是基于实际命令提示符而不是系统本身的命令示例。我不会使用任何这些特定命令来执行实际的编程任务。那将是愚蠢的。 Java有能力这样做。如果你必须知道,我只需要 Java 能够从我正在制作的命令外壳包装器中执行所有/大多数本机命令。
  • @KyleMahan 是的。制作命令外壳包装器。基本上是由 Java 和 GUI 运行的命令提示符。主要用于某些我无法访问终端的特定 UNIX 机器上。
  • 对于其他查看此内容的人,您可以制作自定义包装器或使用 Apache Commons exec:commons.apache.org/proper/commons-exec/tutorial.html

标签: java shell command native


【解决方案1】:

您只需在 Runtime.exec 或 ProcessBuilder 中调用 cmd /c dir 而不是 dir 或其他方式即可在 JAVA 中运行外部应用程序。

【讨论】:

  • 谢谢!你会碰巧知道 UNIX 上的等价物吗?
  • 仅供碰巧看到此答案的任何人使用,*nix 系统上的等效项为:sh -c <command> 虽然,我建议使用 Apache Commons Exec 或类似的东西来处理所有问题这个给你。
【解决方案2】:

另一个技巧是利用 Ant 库并将 <exec ...> (Ant Exec Task) 的编程版本放在一起。这也让您可以访问各种 Ant 支持的输入/输出处理和过滤。

这里不是写 Ant XML 脚本,而是从你的代码中调用 Ant

【讨论】:

    猜你喜欢
    • 2012-01-12
    • 2015-03-31
    • 2014-06-12
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 2011-01-15
    • 1970-01-01
    相关资源
    最近更新 更多