我负责部署在包括OS X在内的多个平台上的Java应用程序。在最新版本的应用程序中,我们为OS X分发了两个独立的捆绑包 - 一个使用Apple提供的JavaApplicationStub,另一个包含一个捆绑JDK 7并使用内部生成的启动器(Oracle JavaAppLauncher的修改)。
问题是,对于后一个捆绑包,如果您尝试运行该应用程序,Mac OS X仍然坚持要安装Java 6。特别是消息说:
“要打开(应用程序),您需要一个Java SE 6运行时。您想立即安装吗?”
如果您没有安装Java SE 6,则无法运行该应用程序,尽管捆绑了JDK 7(如果您安装了Java 6,它仍然使用捆绑的Java 7运行)。 / p>
我正在努力弄清楚OS X如何决定应用程序需要Java?我尝试在Info.plist文件中重命名'Java'字典,并在Resources文件夹中重命名Java子文件夹,但没有成功。有没有人有任何想法?当然可以使用捆绑的JDK运行的应用程序而不需要安装系统JDK吗?
答案 0 :(得分:2)
我找到了答案(在Mike Swingler的帮助下,在macosx-port-dev@openjdk.java.net邮件列表中)。
Info.plist文件中“Java”字典的存在是触发对话框的内容,但是,在尝试启动应用程序后更改字典的名称还不够好。系统以某种方式缓存Java的需求,因此只需再次发出对话框。为了避免这种情况,有必要下载应用程序的新副本并在第一次尝试运行之前进行更改(我被告知,因为重命名应用程序就足够了,甚至重命名它然后再回到原来的名称)。
幸运的是,这意味着我们所要做的就是更改“Java”字典的名称,并更改我们的自定义启动器,以便它使用新的字典名称。