使用JarBundler将Java转换为macOSX的.app文件溶液

2022-09-04 23:21:13

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

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

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

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

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

  3. 他们说你可以自己创建目录和文件,然后将你的文件夹重命名为.app,然后对其运行命令或其他东西,但这很复杂,因为我不知道如何创建info.plist文件...如果你想这样做,到目前为止,我找到的最好的网站就是这个:OSX的Java部署选项

我已经将我的代码编译成一个.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,而不是整个东西,否则当你去构建它时,你会得到一个错误,说一些类似错误: taskdef class net.sourceforge.jarbundler.JarBundler 找不到。

然后,您需要将代码编译为.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


答案 1

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


答案 2

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

另请参阅以下答案: