macOS:在应用程序中嵌入OpenJDK 11仍然会引发java6警报



我们有一个跨平台的应用程序,它由一个java swing UI和许多本地代码组成。Java和本机代码使用JNI相互通信。我们针对java11进行编译和链接。这在windows和linux上运行得很好。

在mac上,我们目前使用的是旧的苹果Java 6。我们希望摆脱这种依赖性,并在所有平台上转向openJDK 11。一切似乎都很顺利。我们看到我们的应用程序正在启动我们的嵌入式java 11版本,一些java代码已经被执行,但在很短的时间后,苹果公司会弹出"请安装java SE 6"的警报。

如何防止这种情况发生?当安装Apple java时,应用程序可以使用java 11而不是java 6工作。

macOS在这里检查的是什么——为什么它认为仍然需要java6?

我们找到了嵌入了本地代码的java 11版本,并动态加载jvm dylib,最后调用JNI_CreateJVM((来实例化jvm,然后我们跳到一些开始执行的java代码中,但过了一段时间,可怕的"请安装java SE 6警报"弹出。

我正在测试macOS Sierra/High Sierra和Mojave。

谢谢你的帮助!

出于某种原因,您需要加载libjli.dylib而不是libjvm.dylib,以避免macOS上出现Java 6警报。

最新更新