我创建了一个可执行的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文件,看看发生了什么?答案 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是目录。