我正在使用 JNI 来允许 C 代码卸载一些最好在 Java 中完成的工作。 In this question我试图链接 libjvm 和 libjli 库以使我的代码正常工作,但现在我怀疑我是否需要 JLI 库.
我找不到任何文档可以清楚地说明 JLI 库的用途。
This other SO question暗示 JLI 是某些 OSX 直通库:
#elif defined(__APPLE__)
// jli needs to be loaded on OSX because otherwise the OS tries to run the system Java
就像this blog一样:
When compiling on OS X it’s very important to link the jli library before the jvm library
我的问题:
- JLI 库有什么用?
- 我需要它在仅 RedHat/CentOS 环境(无 OSX)中进行 C/Java JNI 开发吗?
最佳答案
What is the JLI library for?
libjli.so
包含一个启动器接口(interface),用于准备在命令行中传递的参数并使用它们启动虚拟机。
启动器 main.c是所有 Java 程序的主要入口点。它准备 C 命令行参数并将它们传递到执行参数解析的 JLI_Launch
函数,loading virtual machine来自 libjvm.so
, fork 原始线程,然后 passing control to the JVM .
Do I need it for C/Java JNI development in RedHat/CentOS-only environments (no OSX)?
不太可能。如果您需要,您可能做错了什么。至少我无法想象任何有用的一般用例。
关于java - Java libjli 库有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51102735/