java - Mac OS X 如何确定应用程序需要 Java?

标签 java macos

我负责部署在包括 OS X 在内的多个平台上的 Java 应用程序。对于该应用程序的最新版本,我们为 OS X 分发了两个单独的包 - 一个使用 Apple 提供的 JavaApplicationStub,另一个包含捆绑了 JDK 7 并使用内部制作的启动器(Oracle 的 JavaAppLauncher 的修改版)。

问题是,对于后一个 bundle ,如果您尝试运行该应用程序,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 的应用程序吗?

最佳答案

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

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

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

关于java - Mac OS X 如何确定应用程序需要 Java?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16591780/

相关文章:

c++ - 静态 C++ 变量 Apple Mach-o 链接器问题

xcode - 在 OS X 上使用 OpenCV 的 OpenMP

java - BigDecimal compareTo 未按预期工作

java - 将tomcat应用程序移植到GAE,之前在server.xml中哪里指定资源?

macos - XPC 服务和 AVFoundation

objective-c - 检测 Mac OS X 窗口何时调整大小或移动

跨不同 JVM 的 Java 关闭 Hook

java - Java 中 =+ 和 += 的区别?

java - 无法在Java中的prepareStatement中设置日期

macos - Rsync 错误 : The source and destination cannot both be remote