如何从我的java .jar文件创建可执行的apple .app文件?

时间:2011-09-23 06:22:29

标签: java macos swing .app

我创建了一个可执行的java Swing .jar应用程序。它在Windows上运行良好。应用程序层次结构为:

  

application.jar

     

images(Folder)..........包含应用程序使用的所有图像。

     

libraries(Folder).......包含应用程序使用的所有外部jar库。

     

bundles(Folder).........包含应用程序使用的所有bundle文件。

     

database(Folder)........包含应用程序使用的数据库文件。

以上所有文件夹都存在于jar文件之外。现在我正在尝试从“application.jar”创建一个Mac可执行文件(.app)以在Mac上运行它,所以我使用了“Jar Bundler”指定here但是当我运行输出application.app文件时什么都没有发生,什么都没有运行,我甚至无法调试它。

我认为主要原因是它无法看到外部文件夹。因此,如果应用程序有外部文件夹,是否无法创建.app文件? 有没有办法调试.app文件,看看发生了什么?

4 个答案:

答案 0 :(得分:3)

  

什么都没有运行,我甚至无法调试它。

启动过程的诊断输出可按如下方式获得:

$ export JAVA_LAUNCHER_VERBOSE
$ ./YourApplication.app/Contents/MacOS/JavaApplicationStub

有一个相关的例子here

答案 1 :(得分:2)

问题很可能是你的工作目录。

  • 通过双击运行可执行JAR文件时,工作目录是JAR文件的父目录。

  • 默认情况下,应用程序包的工作目录是其父目录。如果将外部文件夹打包到应用程序包中,它们将位于$APP_PACKAGE/Contents/Resources下。

因此,关于为可执行JAR文件创建的工作目录的假设不适用于应用程序包。

要将工作目录设置为资源目录,请添加

<key>WorkingDirectory</key>
<string>$APP_PACKAGE/Contents/Resources</string>

到您论坛的Info.plist文件。

如果您对应用程序包一无所知,请阅读this document

答案 2 :(得分:1)

这可能会有所帮助:Josh Marinacci的AppBundler

答案 3 :(得分:0)

我不确定您的确切目录层次结构。但是在安装了Xcode的Mac上有一个名为“Jar Bundler”的应用程序。它的确存在于您所要求的目的。 BTW,Mac应用程序使用后缀.app,这是对的。但它们不是文件。 Thery是目录。