一段时间以来,我们的 Java 应用程序已经预捆绑了 Windows 上的 JRE。我们有一个用 C 编写的小型启动器应用程序,它使应用程序使用我们预捆绑的 JRE。现在,随着 Apple 逐渐消灭 Java 的运动,我们决定在 OSX 上使用类似的东西是明智的。在 OSX 上使用预捆绑 JRE 的最佳方式是什么?
最佳答案
我是@Daniel 在他的回答中链接的博文的作者。我成功捆绑了 OpenJDK 并在 Mac App Store 上发布了一个 Java 应用程序。
首先,让我更正已接受答案中的一些问题。
- 捆绑 OpenJDK 并重新分发它是完全合法的。
- OpenJDK 不仅可以在 Lion 上运行,我还可以在 pre-Lion 到 Mountain Lion 上使用它。不过,它需要打补丁才能在 32 位操作系统上运行。
- OpenJDK 处于测试阶段,但运行复杂的 Swing 应用程序仍然可以接受。 OSX 上存在一些问题,但我在 this post. 中描述了如何修复它们
无需按照@Matteo 的回答中所述创建任何脚本,您可以使用名为 AppBundler 的应用程序,由 Oracle 发布,用于创建将启动您的应用程序并创建 native 包的 native 可执行文件。 AppBundler 还将生成一个 Info.plist 文件,其中包含有关如何启动应用程序的信息,例如要启动的可执行文件的名称、Java 参数等...
从 10.7.5 及更高版本开始,如果您不希望出现一个对话框说您的应用程序来自身份不明的开发人员,则您的应用程序必须与 Gatekeeper 兼容并签名(因此您必须注册付费 Mac 开发人员计划)用户首先打开它。
要在 App Store 上部署,您的应用还必须能够在沙盒环境中工作,但如果您将其分发到 App Store 之外,这并不是一项严格的要求。
请注意 AppBundler 缺少一些有用的功能,您可能对 this fork 感兴趣.
关于java - 在 OSX 上使用捆绑的 JRE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11354036/