Java调用外部进程-exe

标签 java exe

我正在构建一个java应用程序,它有时会使用外部exe。此时,我尝试简单地将此 exe 添加为某种库,我可以在进程调用中使用它,因此用户不必安装它..

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

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

我希望它是清楚的,感谢您的帮助。

最佳答案

Java 通过多种方式与其他( native )代码交互:

  • 通过 Java native 接口(interface) (JNI) 专门编码的库
  • 通过使用 Runtime.getRuntime().exec(...) fork 子进程来连接到外部工具
  • 通过网络通信

在第一种情况下,将 JNI 库包含在 Java 程序中非常有用。可以考虑将其作为类资源包含在 JAR 文件中,但这违背了 JAR 文件(保存类和资源)的思想。更有可能的是,您应该将库(针对所有目标平台)与某种安装包(例如 InstallAnywhere 或其他)捆绑在一起

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

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

关于Java调用外部进程-exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33322753/

相关文章:

java - 使用 JSR 303 验证和 AJAX 动态生成的网页

java - 如果打开的文件不是 XML,则再次 showOpenDialog()

python - Pyinstaller 生成的文件不起作用

python - 如何将python 3.X脚本转换为exe文件?

java - 如何在每个@Test之前运行@BeforeClass方法

java - 如何执行来自另一个应用程序的发布请求

java - Log4j .append=true 属性失败

javascript - 通过网站启动已存储在您计算机上的 EXE 文件

linux - 如何在 Ubuntu 的代码块中生成 .out?

c# - 如何下载并运行.exe文件c#