Je suis le portage de notre lanceur d'applications Windows natives de Java 8 à Java 11. Nous avons l' habitude d'appeler la JNI_CreateJavaVM
méthode pour instancier une instance JVM, de trouver la classe principale et appeler sa main
méthode. Avec une application modulaire, env->FindClass
ne retourne pas notre classe d'application. J'ai essayé d' appeler Class.forName
et il ne retourne pas une instance de classe aussi bien.
En outre, les JNI_CreateJavaVM
plaintes au sujet de l' --add-modules
argument.
Comment devrions-nous préciser les modules à charger pour l'api JNI?
Que puis-je faire pour trouver la classe application de la partie native?
Je suis en mesure d'exécuter une application Java à l' aide JLI api à la place. J'ai utilisé ce code pour appeler api JLI: https://github.com/MovingBlocks/TerasologyJavaLauncher/blob/master/jli_library_win.cpp
Il semble que un hack avec des crochets d'application est plus nécessaire. J'ai essayé avec JDK 11.0.2 et cela a fonctionné correctement « en l'état » sans le piratage chemin jli.dll.