10

我负责部署在包括 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 一起运行)。

我正在努力弄清楚 OS X 如何决定应用程序需要 Java?我尝试重命名 Info.plist 文件中的“Java”字典,并重命名 Resources 文件夹中的 Java 子文件夹,但均未成功。有没有人有任何想法?是否可以在不需要安装系统 JDK 的情况下运行带有捆绑 JDK 的应用程序?

4

1 回答 1

2

我找到了答案(在 macosx-port-dev@openjdk.java.net 邮件列表上的 Mike Swingler 的帮助下)。

Info.plist 文件中存在“Java”字典触发对话框的原因,但是,在尝试启动应用程序后更改字典的名称还不够好。系统以某种方式缓存了对 Java 的需求,因此只需再次发出对话框。为了避免这种情况,有必要下载应用程序的新副本并在第一次尝试运行它之前进行更改(我被告知,因为重命名应用程序就足够了,甚至重命名它然后再回到原来的姓名)。

幸运的是,这意味着我们所要做的就是更改“Java”字典的名称,并更改我们定制的启动器,以便它使用新的字典名称。

于 2013-05-16T16:36:38.233 回答