Java libjli 库有什么用?

What is the Java libjli library for?

我正在使用 JNI 以允许 C 代码卸载一些在 Java 中完成得最好的工作。 In this question 我试图 link libjvmlibjli 库让我的代码工作,但现在我质疑我是否需要 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

我的问题:

  1. JLI 库有什么用?
  2. C/Java JNI 在 RedHat/CentOS-only 环境(不需要 OSX)中的开发是否需要它?

What is the JLI library for?

libjli.so 包含一个启动器界面,用于准备命令行中传递的参数并使用它们启动虚拟机。

启动器main.c is the main entry point in all Java programs. It prepares the C command line arguments and passes them into JLI_Launch function which performs argument parsing, loading virtual machine from libjvm.so, forking primordial thread and then passing control to the JVM

Do I need it for C/Java JNI development in RedHat/CentOS-only environments (no OSX)?

不太可能。如果您需要,您 可能 做错了什么。至少我无法想象任何有用的通用用例。