【发布时间】:2013-02-01 19:08:59
【问题描述】:
我要做的只是将一个简单的 java 程序转换为一个 macOSX .app 文件,这样我就可以将它作为一个简单的可执行文件分发。
我读遍了所有地方,每个人都说同样的话:
- 使用 Xcode - 据我所知,Xcode 不再支持 Java 构建
-
使用 Jar Bundler - 所有的教程似乎都过时了,而且它不起作用。当我运行时: java -jar jarbundler-2.0.0.jar
控制台返回“jarbundler-2.0.0.jar 中没有主清单属性”
如果我是对的,这对于打包 jar 文件的人来说将是一个失败,对吧?但是我尝试从其他网站和其他版本下载它,但我得到了同样的东西。
他们说您可以自己创建目录和文件,然后将文件夹重命名为 .app,然后在其上运行命令或其他内容,但这很复杂,因为我不知道如何创建信息.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 文件,然后打开命令提示符并按照此处的说明进行操作:Create a Jar File 该命令将如下所示:
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
【问题讨论】:
-
什么版本的 XCode?span>
-
Xcode 4.6版,今天刚更新
-
这个我没试过,不过你可以看看this
-
是的,我看过了...我对 ANT 一无所知,但我创建了一个 build.xml 文件并按照它所说的做了,但它告诉我 taskdef 类网络.sourceforge.jarbundler 找不到。也许我应该去阅读更多关于 ANT 教程之类的内容。
-
我从 java.net 下载了Java Application Bundler,这似乎是苹果捆绑器的替代品,并遵循here 的基本说明,并且能够构建一个能够运行编译后的二进制文件的捆绑包在 Java 7 下
标签: java macos jar executable-jar