如何使用 JNI_CreateJavaVM 到 运行 模块化 java 应用程序

How to use JNI_CreateJavaVM to run modular java app

我正在将我们的原生 windows 应用程序启动器从 Java 8 移植到 Java 11。我们曾经调用 JNI_CreateJavaVM 方法来实例化一个 JVM 实例,找到main class 并调用它的 main 方法。使用模块化应用程序,env->FindClass 不会 return 我们的应用程序 class。我尝试调用 Class.forName 但它也没有 return 一个 class 实例。

另外,JNI_CreateJavaVM 抱怨 --add-modules 争论。

我们应该如何指定要为 JNI 加载的模块 api?

如何从本机部分找到应用 class?

我能够 运行 使用 JLI api 的 Java 应用程序。我使用这段代码来调用 JLI api: https://github.com/MovingBlocks/TerasologyJavaLauncher/blob/master/jli_library_win.cpp

似乎不​​再需要使用应用挂钩进行破解。我尝试使用 JDK 11.0.2,它可以正常工作 "as-is" 而无需破解 jli.dll 路径。