我正在将本机Windows应用程序启动器从Java 8移植到Java11。我们曾经调用JNI_CreateJavaVM
方法来实例化JVM实例,查找主类并调用其main
方法。对于模块化应用程序,env->FindClass
不会返回我们的应用程序类。我尝试调用Class.forName
,但它也不会返回类实例。
此外,JNI_CreateJavaVM
抱怨--add-modules
的论点。
我们应该如何指定要为JNI api加载的模块?
如何从本机部分中找到应用程序类?
答案 0 :(得分:1)
我能够使用JLI api运行Java应用程序。我使用以下代码来调用JLI api: https://github.com/MovingBlocks/TerasologyJavaLauncher/blob/master/jli_library_win.cpp
似乎不再需要使用应用程序挂钩进行黑客入侵。我尝试使用JDK 11.0.2,它可以按原样正确工作,而不会入侵jli.dll路径。