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

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

application.jar

images(文件夹)……….包含应用程序使用的所有图像。

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

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

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

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

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

最有可能的问题是您的工作目录。

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

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

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

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

 WorkingDirectory $APP_PACKAGE/Contents/Resources 

到您的包的Info.plist文件。

如果您对应用程序包一无所知,请阅读本文档 。

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

发射过程的诊断输出可以如下获得:

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

这里有一个相关的例子。

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

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