我将我们的原生Windows应用程序启动器从Java 8移植到Java 11.我们曾经调用JNI_CreateJavaVM
方法来实例化JVM实例,找到主类并调用它的main
方法。使用模块化应用程序,env->FindClass
不会返回我们的应用程序类。我试着调用Class.forName
,它也没有返回类实例。
此外,JNI_CreateJavaVM
投诉有关--add-modules
的论点。
我们应该如何为JNI api指定要加载的模块?
如何从本机部分找到app类?
我能够使用JLI api运行Java应用程序。我用这段代码来调用JLI api:https://github.com/MovingBlocks/TerasologyJavaLauncher/blob/master/jli_library_win.cpp
似乎不再需要使用app hook的黑客攻击了。我尝试使用JDK 11.0.2并且它正常工作“as-is”而没有破解jli.dll路径。