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

问题描述 投票:3回答:1

我将我们的原生Windows应用程序启动器从Java 8移植到Java 11.我们曾经调用JNI_CreateJavaVM方法来实例化JVM实例,找到主类并调用它的main方法。使用模块化应用程序,env->FindClass不会返回我们的应用程序类。我试着调用Class.forName,它也没有返回类实例。

此外,JNI_CreateJavaVM投诉有关--add-modules的论点。

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

如何从本机部分找到app类?

java java-native-interface java-11 jigsaw jnienv
1个回答
1
投票

我能够使用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路径。

© www.soinside.com 2019 - 2024. All rights reserved.