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

Iva*_*tin 5 java java-native-interface java-platform-module-system jnienv java-11

我将我们的本机 Windows 应用程序启动器从 Java 8 移植到 Java 11。我们过去常常调用JNI_CreateJavaVM方法来实例化 JVM 实例、查找主类并调用其main方法。对于模块化应用程序,env->FindClass不会返回我们的应用程序类。我尝试调用Class.forName,但它也没有返回类实例。

另外,还有JNI_CreateJavaVM对争论的抱怨--add-modules

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

我该怎么做才能从本机部分找到应用程序类?

Iva*_*tin 2

我可以使用 JLI api 来运行 Java 应用程序。我使用此代码调用 JLI api: https://github.com/MovingBlocks/TerasologyJavaLauncher/blob/master/jli_library_win.cpp

似乎不再需要使用应用程序挂钩进行黑客攻击。我尝试使用 JDK 11.0.2,它“按原样”正常工作,无需破解 jli.dll 路径。