使用app bundler将Mac转换为Mac OSX App Bundle

时间:2014-07-27 05:31:43

标签: java macos bundle

我尝试使用app bundler将我的.jar捆绑到MacOSX应用包中。 I'm following this tutorial.

它说要在高级项目目录中添加lib文件夹,但我不知道这意味着什么。我一直在寻找它,我无法找到它是什么。这是我唯一的问题,有人知道吗?

编辑:

这是我的build.xml文件:

<project name="Rage Mage" basedir=".">
<taskdef name="ragemage"
         classname="com.oracle.appbundler.AppBundlerTask"   
         classpath="lib/appbundler-1.0.jar" />

<target name="bundle-RageMage">
    <delete dir="appBundle" failonerror="false"/>
    <mkdir dir="appBundle"/>
    <bundleapp outputdirectory="bundle"
        name="Rage Mage"
        displayname="Rage Mage"
        icon="res/icon.icns"
        identifier="ragemage.src.Window"
        mainclassname="ragemage.src.Window">
        <classpath file="dist/ragemage_1.1.1.jar" />
    </bundleapp>
</target>

谢谢!

1 个答案:

答案 0 :(得分:4)

好的,所以,经过一番游戏后,这就是我所理解的......

  • 下载Java Application Bundler并将其放在项目的lib目录中。您需要创建此目录...
  • 在您的项目目录中创建一个新的Ant脚本,随意调用它...另外,请花点时间阅读AppBundler Task Docs

ant脚本应该基于以下骨架......

<project name="ButtonDemo" default="bundle-buttonDemo" basedir=".">        
    <taskdef name="bundleapp"
             classname="com.oracle.appbundler.AppBundlerTask"   
             classpath="lib/appbundler-1.0.jar" />
    <!-- See the lib reference here, this is why you need to use the lib directory! -->

    <target name="bundle-buttonDemo">
        <delete dir="appBundle" failonerror="false"/>
        <mkdir dir="appBundle"/>
        <bundleapp outputdirectory="appBundle"
            name="ButtonDemo"
            displayname="Button Demo"
            identifier="components.ButtonDemo"
            mainclassname="components.ButtonDemo">
            <!-- The following is important and should point to your build -->
            <classpath file="dist/ButtonDemo.jar" />
            <!-- You can have multiple instance of classpath if you 3rd party or
                 dependent jars in different locations -->
        </bundleapp>
    </target>
</project>
  • 构建项目
  • 使用(例如)ant -f {You App Bundler script}
  • 运行ant脚本

应用程序包,在这种情况下ButtonDemo.app将在appBundle目录中创建。如果可以,浏览ButtonDemo.app/Contents/Java的内容并确保所有必需的Jar文件都在那里......

快乐捆绑!

根据更新的build.xml文件进行了更新

1- default标记未指定project目标。想想这就像你的“主类”或“主要”方法,没有,蚂蚁不知道你想要运行什么......

<project name="Rage Mage" basedir="." default="bundle-RageMage">

2- name的{​​{1}}非常重要,您可以在任何脚本中使用它来识别当ant到达您的代码引用时应该做什么......

因此,根据您的示例,您需要将taskdef的名称从taskdef更改为ragemage或将bundleapp标记更改为bundleapp ...

要么改变这个......

ragemage

或此(在目标<taskdef name="bundleapp" classname="com.oracle.appbundler.AppBundlerTask" classpath="lib/appbundler-1.0.jar" /> 中)

bundle-RageMage

就我个人而言,我将其保留为<ragemage outputdirectory="bundle" name="Rage Mage" displayname="Rage Mage" icon="res/icon.icns" identifier="ragemage.src.Window" mainclassname="ragemage.src.Window"> <classpath file="dist/ragemage_1.1.1.jar" /> </ragemage> ,但那就是我......

3- bundleapp的{​​{1}},deletemkdir属性相关...

outputdirectory

或者将它们全部bundleapp<delete dir="appBundle" failonerror="false"/> <mkdir dir="appBundle"/> <bundleapp outputdirectory="bundle"... ,你想要的一切......

4-您的主要课程不大可能是appBundle,可能会是bundle