【问题标题】:Convert Java to .app file for MacOSX using JarBundler使用 JarBundler 将 Java 转换为 MacOSX 的 .app 文件
【发布时间】:2013-02-01 19:08:59
【问题描述】:

我要做的只是将一个简单的 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,然后在其上运行命令或其他内容,但这很复杂,因为我不知道如何创建信息.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


【解决方案1】:

在 Mac OS X 上,application bundle 是一个名称以 .app 结尾的目录,其中包含应用程序使用的资源。这个game 是一个使用ant build script原位构建包的示例。引用了其他参考资料here。

【讨论】:

  • 感谢您的链接。我已经创建了所有的目录和文件,现在我只需要弄清楚在 Info.plist 中放置什么,因为他们说 Xcode 会为你生成它,但我认为他们不再支持 Java 项目了。您知道文件中绝对需要什么吗?我知道我需要一个包含 main 方法的类的引用,但是还有其他的吗?
  • 我只是编辑示例的Info.plist;这些键在上面引用的答案中的一篇文章中列出。
  • 到目前为止,这个链接对我来说是最大的帮助:Java deployment options 我已经按照该链接中的所有步骤进行操作,由于某种原因,当我双击我的 .app 时没有任何反应......
  • 这是我的 Info.plist 的样子:Info.plist
  • 编辑你的问题会更清晰,但我认为你错过了Java 字典条目。
【解决方案2】:

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

另请参阅以下答案:

【讨论】:

    【解决方案3】:

    为我工作!出于某种原因,我无法将 jarbundler .jar 文件放在 Ant 区域中,而是必须从 build.xml 中显式指向它(我将它放在 &lt;projectRoot&gt;/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)。

    【讨论】:

      猜你喜欢
      • 2014-02-20
      • 2016-01-30
      • 2016-07-21
      • 2021-12-24
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 2015-08-27
      相关资源
      最近更新 更多