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

如何从java.jar文件创建可执行的apple.app文件?,java,macos,swing,.app,Java,Macos,Swing,.app,我已经创建了一个可执行的JavaSwing.jar应用程序。它在Windows上运行良好。应用程序层次结构是: application.jar 图像(文件夹)。。。。。。。。。。包含应用程序使用的所有图像 库(文件夹)。。。。。。。包含应用程序使用的所有外部jar库 捆绑包(文件夹)。。。。。。。。。包含应用程序使用的所有捆绑文件 数据库(文件夹)。。。。。。。。包含应用程序使用的数据库文件 以上所有文件夹都存在于jar文件之外。现在我正试图从“application.jar”创建一个Mac可执

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

application.jar

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

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

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

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

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

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

我不确定您的确切目录层次结构。但在安装了Xcode的Mac上,有一个名为“Jar Bundler”的应用程序。它的存在正是为了你所要求的目的。
顺便说一句,Mac应用程序使用后缀.app,没错。但它们不是文件。这些是目录。

我不确定您的确切目录层次结构。但在安装了Xcode的Mac上,有一个名为“Jar Bundler”的应用程序。它的存在正是为了你所要求的目的。
顺便说一句,Mac应用程序使用后缀.app,没错。但它们不是文件。这些是目录。

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

  • 当您双击一个可执行JAR文件来运行它时,工作目录就是JAR文件的父目录

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

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

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

<key>WorkingDirectory</key>
<string>$APP_PACKAGE/Contents/Resources</string>
工作目录
$APP_软件包/内容/资源
转到捆绑包的
Info.plist
文件


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

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

  • 当您双击一个可执行JAR文件来运行它时,工作目录就是JAR文件的父目录

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

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

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

<key>WorkingDirectory</key>
<string>$APP_PACKAGE/Contents/Resources</string>
工作目录
$APP_软件包/内容/资源
转到捆绑包的
Info.plist
文件

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

这可能有帮助:作者:Josh Marinaci

这可能有帮助:作者:Josh Marinaci

没有运行,我甚至无法调试它

可通过以下方式获得发射过程的诊断输出:

$ export JAVA_LAUNCHER_VERBOSE $ ./YourApplication.app/Contents/MacOS/JavaApplicationStub $export JAVA_LAUNCHER_VERBOSE $./YourApplication.app/Contents/MacOS/JavaApplicationStub 有一个相关的例子

没有运行,我甚至无法调试它

可通过以下方式获得发射过程的诊断输出:

$ export JAVA_LAUNCHER_VERBOSE $ ./YourApplication.app/Contents/MacOS/JavaApplicationStub $export JAVA_LAUNCHER_VERBOSE $./YourApplication.app/Contents/MacOS/JavaApplicationStub
有一个相关的例子。

将应用程序打包为
.app
文件是否提供了(在Windows/Macintosh/*nix上运行)未提供的内容?将应用程序打包为
.app
文件是否提供了(在Windows/Macintosh/*nix上运行)未提供的内容?