看看 java.net 上的appbundle项目。它提供了一个 Ant 任务,它将您的应用程序打包为一个普通的 Mac.app
包,并且可以选择包含一个嵌入式 JRE。
目前,Mac 上的整个 Java 环境有点混乱,因为我们仍处于过渡时期,Java 6 版本由 Apple 提供和维护,Java 7 版本直接来自 Oracle。a_horse_with_no_name 引用的 jarbundler 项目用于将 JAR 打包为一个.app
包,该包将在 Mac OS X 10.5/6/7 随附的 Apple 提供的 Java 6 上运行,但在 Oracle Java 7 上不运行,相反,appbundler 以 Oracle 为目标Java 7 及其.app
捆绑软件不能在 Java 6 上运行。
如果您想针对最近运行 10.7 或 10.8 的 Mac,特别是如果您想通过 Mac App Store 分发您的应用程序,那么您应该使用 appbundler 并捆绑 JRE 的副本。如果您不想通过商店分发,则嵌入式 JRE 是可选的。如果您的应用程序可以在 Java 6 上运行,那么使用 jarbundler 以 Apple Java 6 为目标将意味着您的应用程序可以在较旧的 (<= 10.6) Mac 上运行。但是,当他们尝试运行您的应用程序时,系统会提示任何拥有仅 Java 7 的较新 Mac 的人下载并安装 Java 6。
只要应用程序内的目录中的所有内容(以及嵌入式 JRE 中的相应文件,如果适用)在 zip 文件中标记为执行权限,就可以将其分发到.app
存档中。如果您使用 Ant 构建,则需要将s 与 right一起使用。.zip
Contents/MacOS
<zipfileset>
filemode