带有捆绑jre的Netbeans平台安装程序mac OS X(Mac上的私有Jvm)

时间:2015-04-13 08:14:24

标签: java jvm netbeans-platform

我使用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应用程序? 谢谢

1 个答案:

答案 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与您的应用程序捆绑在一起。

基本上有两种方法可以解决问题:

  1. 您可以等待接受并修复RFE。
  2. 自己动手修理。
  3. 下面,我将重点介绍第二种方法。它涉及检查NB核心源代码并构建您自己的nbi-engine.jar文件,然后在项目中使用它而不是平台本身附带的文件。

    1. 首先查看Mercurial的最新NB源代码。 像hg clone http://hg.netbeans.org/main-golden/这样的东西应该 让你去。

    2. 使用IDE(NetBeans!)打开位于nbi/engine的项目 在您刚从Mercurial检出的文件中。打开后,它将如下所示:NBI Engine project

    3. 在该项目中找到源代码文件: org/netbeans/installer/wizard/components/actions/CreateMacOSAppLauncherAction.java

    4. 对于此文件,您只需添加与同一目录中的等效CreateNativeLauncherAction.java文件中存在的相同代码。您可以在patch file attached to the RFE中找到需要对CreateMacOSAppLauncherAction.java进行的确切更改。

    5. 现在重新构建“NBI Engine”项目。结果产生了新的nbi-engine.jar。您需要从该项目中抢救nbi-engine.jar文件并将其放在其他位置。之后,您将不再需要“NBI Engine”项目,您可以将其删除。实际上,您可以删除在步骤1中从Mercurial检出的所有内容。

    6. 就是这样。

      现在剩下的就是弄清楚如何让你的项目使用新生成的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包。但那不是你问的问题。 : - )

相关问题