Java libjli 库有什么用?
What is the Java libjli library for?
我正在使用 JNI 以允许 C 代码卸载一些在 Java 中完成得最好的工作。 In this question 我试图 link 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 库有什么用?
- 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)?
不太可能。如果您需要,您 可能 做错了什么。至少我无法想象任何有用的通用用例。
我正在使用 JNI 以允许 C 代码卸载一些在 Java 中完成得最好的工作。 In this question 我试图 link 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 库有什么用?
- 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)?
不太可能。如果您需要,您 可能 做错了什么。至少我无法想象任何有用的通用用例。