13

我要做的就是将一个简单的 java 程序转换为一个 macOSX .app 文件,这样我就可以将它作为一个简单的可执行文件分发。

我到处阅读,每个人都说同样的话:

  1. 使用 Xcode - 据我所知,Xcode 不再支持 Java 构建
  2. 使用 Jar Bundler - 所有的教程似乎都过时了,而且它不起作用。当我运行时: java -jar jarbundler-2.0.0.jar

    控制台返回“jarbundler-2.0.0.jar 中没有主要清单属性”

    如果我是对的,这对于打包 jar 文件的人来说将是一个失败,对吗?但我试过从其他网站和其他版本下载它,但我得到了同样的东西。

  3. 他们说您可以自己创建目录和文件,然后将文件夹重命名为 .app ,然后在其上运行命令或其他内容,但这很复杂,因为我不确切知道如何创建 info.plist 文件...如果你想这样做,到目前为止我发现的最好的网站是这个:Java Deployment Options for OSX

我已经将我的代码编译成一个 .jar 文件,我有一个图标和一切,我需要做的就是以某种方式将它打包成一个 .app 文件。

我在这里先向您的帮助表示感谢!

解决方案

编辑:我明白了!经过 7 或 8 小时的搜索和阅读后,它可以工作了。由于我是新手,因此我将发布我学到的所有内容,以拯救遇到同样问题的其他人免于遭受痛苦。我放弃了自己动手的方法,回到了 JarBundler。如果其他人正在阅读本文并且他们对 ANT 一无所知,这就是我所做的:下载 JarBundler,我从这里获得了我的:Mac OS X JarBundler ANT Task并按照那里的说明进行操作。

下载时,将 jarbundler-2.2.0.jar 文件放在这里:

/usr/share/ant/lib

您可能必须运行命令来移动它,例如:

sudo mv jarbundler-2.2.0.jar ~/../../usr/share/ant/lib/jarbundler-2.2.0.jar

就像我说的,我还在学习,但这对我有用。

确保您移动了正确的 jarbundler,这是我遇到问题的地方,我移动了整个文件夹,而不是内部 .jar 文件,因此请确保您移动了您下载的文件夹 zip 中的 .jar,而不是整个文件,否则当你去构建它时,你会得到一个错误,比如 error: taskdef class net.sourceforge.jarbundler.JarBundler could not be found。

然后你需要将你的代码编译成 .jar 文件(有两种类型,一种类似于 .zip,另一种是可执行文件)你想要一个普通的 JAR 文件,而不是可执行文件,所以你首先需要编译获取 .class 文件的代码,然后打开命令提示符并按照此处的说明进行操作:创建 Jar 文件命令将如下所示:

jar cf myName.jar *.class

获得 jar 文件后,您需要在同一文件夹中创建一个 .xml 文件,并且需要将其命名为 build.xml。使用文本编辑器对其进行编辑。按照上面链接上的说明创建它。它看起来像这样:

//build.xml

<project name="MyProject">

<taskdef name="jarbundler"
classname="net.sourceforge.jarbundler.JarBundler" />

<target name="bundle">

<jarbundler dir="release"
        name="Apollo's Image Editor"
        mainclass="ImageEditorGUI" 
        jar="ApolloIE.jar"
        icon="Aperture.icns" />

</target>

</project>

从那里(顺便说一下,我使用的是 Macbook Pro),您所要做的就是从该文件夹运行命令行:

蚂蚁束

它应该在一个名为 release 的文件夹中创建一个 .app 文件。总结一下:你只需要你的 .jar 文件和 build.xml 文件在同一个文件夹中,然后运行命令:ant bundle (或者你在 build.xml 文件中命名你的目标,我将它命名为 bundle)

祝你好运,希望这对那里的任何人都有帮助。

如果有人想知道,我将 JarBundler 生成的 Info.plist 放入我正在制作的目录中,它就可以工作了!所以这就是问题所在,我只是不知道如何正确格式化它......这里是:Info.plist

4

3 回答 3

2

在 Mac OS X 上,应用程序包是一个名称以 结尾的目录,.app其中包含应用程序使用的资源。该游戏是使用构建脚本在原位构建捆绑包的示例。此处引用了其他参考资料。ant

于 2013-02-17T04:30:15.833 回答
1

如果您想使用 Oracle Java 而不是 Apple 已停产的 Java,您应该使用Java Application Bundler而不是 JarBundler。

另请参阅这些答案:

于 2015-05-07T07:48:02.027 回答
0

为我工作!出于某种原因,我不能将 jarbundler.jar文件放在 Ant 区域中,而是必须从 build.xml 中显式指向它(我把它放在 中<projectRoot>/jarbundler/jarbundler-2.2.0.jar)。我的 build.xml 看起来像:

<?xml version="1.0" encoding="UTF-8"?>
<project name="TripleWhammy" default="default" basedir=".">        
    <taskdef name="jarbundler"
             classname="net.sourceforge.jarbundler.JarBundler"
             classpath="jarbundler/jarbundler-2.2.0.jar" />

    <target name="bundle">
        <jarbundler dir="."
                    name="Triple Whammy"
                    mainclass="org.bigclue.TripleWhammy"
                    jar="target/triple-whammy-1.0-jar-with-dependencies.jar"
                    icon="triple-whammy.icns"/>
    </target>
</project>

这在我的项目目录中创建了“Triple Whammy.app”。我的图标看起来不错。甜的。

现在我已经构建了一个简单的可分发骰子.app,是时候构建一些很棒的东西了......

(Mac OS X 10.6.8、Java 1.6.0_51、Ant 1.8.4;使用 Maven 3.0.4 及其“程序集”插件版本 2.4 构建了我的 .jar)。

于 2013-09-22T00:18:44.150 回答