我正在构建一个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/