我使用jdk 1.8u40处理Netbeans平台应用程序。 我想用私人jvm包jre jdk 1.8u40打包Mac OS X的安装程序。我为linux&创建了一个安装程序Windows捆绑Jre,但Mac OS x我不能。我不知道如何使用jarbeundler和netbeans平台为Mac Os X创建安装程序。 还有另一个捆绑jre的mac应用程序? 谢谢
答案 0 :(得分:2)
不幸的是,这是一个遗漏,可以追溯到很久以前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积极鼓励开发人员将私有JRE与应用程序捆绑在一起。事实上,如果您希望您的应用程序在Mac App Store中,那么您必须将私有JRE与您的应用程序捆绑在一起。
基本上有两种方法可以解决问题:
下面,我将重点介绍第二种方法。它涉及检查NB核心源代码并构建您自己的nbi-engine.jar
文件,然后在项目中使用它而不是平台本身附带的文件。
首先查看Mercurial的最新NB源代码。
像hg clone http://hg.netbeans.org/main-golden/
这样的东西应该
让你去。
使用IDE(NetBeans!)打开位于nbi/engine
的项目
在您刚从Mercurial检出的文件中。打开后,它将如下所示:
在该项目中找到源代码文件:
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检出的所有内容。
就是这样。
现在剩下的就是弄清楚如何让你的项目使用新生成的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包。但那不是你问的问题。 : - )