Java 调用外部进程 - exe

Java calling an external process - exe

我正在构建一个 java 应用程序,它有时会使用外部 exe。在这一点上,我试图简单地将这个 exe 添加为某种库,我可以在进程调用中使用它,这样用户就不必安装它了。

这个 exe 文件是一个命令行工具,它产生一些输出,由应用程序进一步处理。

所以我的问题是,如何在 java 应用程序中包含 exe 文件,而不是将其作为系统进程调用。同样可以接受的是,如果此 exe 位于最终的 lib 文件夹中,java 应用程序将在其中获取并执行它。

我希望一切都清楚,感谢您的帮助。

Java 通过几种方式与其他(本机)代码交互:

  • 通过 Java 本机接口 (JNI)
  • 到专门编码的库
  • 通过使用 Runtime.getRuntime().exec(...)
  • 分叉子进程来使用外部工具
  • 通过网络通讯

在第一种情况下,将 JNI 库包含在 Java 程序中很有用。可以考虑将其作为 class 资源包含在 JAR 文件中,但这与 JAR 文件(包含 classes 和资源)的想法背道而驰。您更有可能将库(针对所有目标平台)与某种安装包(例如 InstallAnywhere 或其他)捆绑在一起

在第二种情况下,将二进制文件包含到您的 Java 程序中(即在 JAR 文件中)是没有用的。相反,它很可能有(应该有)自己的安装过程,并且您的 Java 代码应该使用适当的命令行 (PATH) 来查找可执行文件。

我认为第三种情况不相关。