我正在尝试使用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>

谢谢!

最佳答案

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

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

  • 蚂蚁脚本应基于以下框架...
    <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}
  • 运行蚂蚁脚本

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

    捆绑愉快!

    根据更新的build.xml文件更新

    1-没有由default标记指定的project目标。将此视为您的“主类”或“主”方法,没有,蚂蚁不知道您要运行什么...
    <project name="Rage Mage" basedir="." default="bundle-RageMage">
    

    2- nametaskdef很重要,您可以在任何脚本中使用它来标识当蚂蚁碰到您的标签参考时应该做什么...

    因此,根据您的示例,您需要将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>
    

    就个人而言,我将其保留为bundleapp,但这就是我...

    3- deletemkdiroutputdirectorybundleapp属性相关...
    <delete dir="appBundle" failonerror="false"/>
    <mkdir dir="appBundle"/>
    <bundleapp outputdirectory="bundle"...
    

    将它们全部设为appBundlebundle,让它们随心所欲...

    4-您的主类不太可能是ragemage.src.Window,可能会是Window

    08-05 18:27