我们有一个本地应用程序,我们可以通过 JNI->DLL 或通过使用命令行参数调用 EXE 来访问它。哪种方法最好?
我们将每天大约调用此方法 100 次。性能不是特别重要。这个 native 应用程序是由我们公司以外的一个小组开发的,因此我们对代码不太熟悉(尽管我们确实拥有它)。
EXE 路径似乎更简单、更直接(特别是因为我们没有使用很多 C)。另外,如果你的 DLL 代码有内存泄漏或遇到其他问题,我还收集了 JNI 的信息,你可以使 JVM 崩溃。
最佳答案
我强烈推荐 .exe 方法。
- 如果它崩溃了,您可以重新生成 .exe
- 您不会遭受内存泄漏/损坏等问题。
缺点是您可能必须解析 .exe 输出以确定结果/状态等,如果它不是为此而设计的,那么这可能是不切实际的(甚至是不可能的)。
但作为第一种方法,生成 .exe 是可行的方法。别忘了 consume the stdout/err concurrently避免任何 .exe 挂起问题(一个常见问题,如果相信 SO 问题)。
关于java - 通过 JNI/DLL 或 EXE 执行 native 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1556093/