2011-09-23 101 views
1

我已经创建了一个可执行的Java Swing .jar应用程序。它在Windows上正常工作。应用层次是:如何从我的java .jar文件创建可执行的苹果.app文件?

application.jar

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

库(文件夹).......包含应用程序使用的所有外部jar库。

捆绑包(文件夹).........包含应用程序使用的所有捆绑包文件。

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

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

我认为主要原因是它无法看到外部文件夹。那么如果应用程序有外部文件夹,那么不可能创建一个.app文件? 有没有一种方法来调试.app文件来查看发生了什么?

+0

是否有任何应用程序打包为'.app'文件提供的不是[Java Web Start]提供的(http://stackoverflow.com/tags/java-web-start/info)在Windows/Macintosh/* nix)? –

回答

2

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

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

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

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

为了将工作目录设置到资源目录中,添加

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

Info.plist文件您的绑定。

如果你一无所知的应用程序软件包,请阅读this document

0

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

1

这可能帮助:AppBundler由Josh Marinacci

+0

似乎已转移到https://github.com/joshmarinacci/AppBundler –

3

没有运行,而我甚至不能调试。

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

有一个相关的示例here:从发射过程

诊断输出可以如下获得。