如何为OSX打包Jar



我知道JarBundler不是专门开发的,不适用于1.7(链接),我在同一个网站上找到了AppBundler,它确实从jar中生成了正确的.app文件。

我在这里发现这些jar应用程序的内容是相同的,所以我按照那个人的建议做了,只替换了Contents/Java(或旧JarBundler中的Contents/Resources/Java)中的jar文件,它就工作了。我可以继续使用AppBundler,但我不希望Ant需要额外的依赖项/插件。

无论如何,当我用Ant实现它的自动化时,.app不会打开。我把范围缩小到:

  • 由AppBundler生成的.app
  • 如果我复制并粘贴到其他地方,它就会启动
  • 如果我用Ant复制并粘贴它,它就不会启动

我甚至尝试过清除应用程序状态缓存之类的操作,但没有成功。同样,奇怪的是,如果我自己复制"源应用程序",副本就会启动。如果我用Ant复制源应用程序(我没有做任何其他事情),它就不会。

这是我的Ant片段(.app只是文件夹AFAIK)(dist.macapp.app的名称):

<copy todir="${dist.dir}" >  
    <fileset dir="${resources.dir}">  
        <include name="${dist.macapp}/**" />
    </fileset>
</copy>

我想我有两个问题:

  1. 为什么这不起作用(我想我已经提供了足够的尝试:P)
  2. 有没有更好的方法可以做到这一点(Java Web Start是不可能的,也许我稍后会研究)

Mac上的.app文件只是一个标准化的文件夹布局。你可以把它和一个脚本捆绑在一起。仅仅替换jar文件是不够的。

制作类似的东西

Contents/
    Java/yourjar.jar
    info.plist /* specific to your application! maybe make a template then find and replace strings */
    MacOS/JavaApplicationStub

将可执行文件/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub复制到MacOS文件夹中(这不是特定于应用程序的,可以执行一次)。

我不确定特定于Java的info.plist的格式。

相关内容

  • 没有找到相关文章

最新更新