我使用 jdk 1.8u40 开发 Netbeans 平台应用程序。 我想使用私有(private) jvm 包 jre jdk 1.8u40 打包 Mac OS X 的安装程序。我使用捆绑 Jre 创建了一个适用于 linux 和 windows 的安装程序,但 Mac os x 不能。我不知道如何使用 jarbundler 和 netbeans 平台来创建 Mac Os X 安装程序。 还有另一个可以为 mac 应用程序捆绑 jre 吗? 谢谢
最佳答案
不幸的是,这是一个遗漏,可以追溯到不久前创建 NetBeans 安装程序项目 ( NBI ) 时。
有一个 RFE为此开放,本文大部分文本来自该 RFE。
事实上,NBI 目前(从 NB 8.0.2 开始)不支持与 Mac OS X 捆绑的 JRE。
为什么会这样,我不知道,但我假设原因是在创建 NBI 时,Mac OS X 上捆绑 JRE 的概念有些陌生。当时,Mac OS X总是预装了 JRE。如今,Mac OS X 没有预装 JRE,Apple 积极鼓励开发人员将私有(private) JRE 与应用程序捆绑在一起。事实上,如果您希望您的应用程序出现在 Mac App Store 中,那么您必须将私有(private) JRE 与您的应用程序捆绑在一起。
解决这个问题基本上有两种方法:
- 您可以等待 RFE 被接受并修复。
- 自己修复即可。
下面,我将重点介绍第二种方法。它涉及检查 NB 核心源代码并构建您自己的 nbi-engine.jar
文件,然后在您的项目中使用该文件,而不是平台本身附带的文件。
首先查看 Mercurial 的最新 NB 源代码。 像
hg clone http://hg.netbeans.org/main-golden/
之类的东西应该 让你继续前进。使用 IDE (NetBeans!) 打开位于
nbi/engine
的项目 在您刚刚从 Mercurial checkout 的文件中。打开后,它看起来像这样:在该项目中找到源代码文件:
org/netbeans/installer/wizard/components/actions/CreateMacOSAppLauncherAction.java
。对于此文件,您只需添加与同一目录中的等效
CreateNativeLauncherAction.java
文件中存在的代码相同的代码。您可以在 patch file attached to the RFE 中找到需要对CreateMacOSAppLauncherAction.java
进行的确切更改。 .现在重新构建“NBI Engine”项目。结果会生成一个新的
nbi-engine.jar
。您需要从该项目中回收nbi-engine.jar
文件并将其放在其他位置。之后,您将不再需要“NBI Engine”项目,并且可以将其删除。事实上,您可以删除在第 1 步中从 Mercurial checkout 的所有内容。
就是这样。
现在剩下的就是弄清楚如何让您的项目使用新生成的 nbi-engine.jar
文件,而不是 NB 平台附带的文件。下面我将解释如何为基于 Maven 的 NB 平台项目执行此操作。如果您的项目是基于 Ant 的,那么您就得靠自己了。 :-(
在您的 POM 文件中进行以下调整:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>nbm-maven-plugin</artifactId>
<configuration>
<userSettings>
<!-- This will override parameter of the same name set by the MOJO -->
<nbi.engine.jar>path-to-an-alternative-nbiengine-jar</nbi.engine.jar>
</userSettings>
</configuration>
</plugin>
仅此而已。
您的下一个问题将是如何从 Oracle 的官方 JRE 包中创建适用于 Mac 的 JRE bundle 。但这不是你问的问题。 :-)
关于java - Netbeans 平台安装程序 mac OS X 与捆绑 jre(Mac 上的私有(private) Jvm),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29600720/