看一看java.net上的appbundler项目。它提供了一个Ant任务,将您的应用程序打包为一个普通的Mac .app
包,并可以选择包含嵌入式JRE。
由于我们仍然处于Java 6版本由Apple提供和维护并且Java 7版本直接来自Oracle的过渡时期,因此Mac上的整个Java环境目前有点混乱。 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。
它的优良的.zip
存档分发.app
,只要在Contents/MacOS
目录(在嵌入式JRE相应的文件,如果适用)的应用程序内的一切标有zip文件的执行权限。如果您使用Ant构建,则需要使用<zipfileset>
s,并使用filemode
。
您是否试过[Excelsior JET](http://www.excelsior-usa.com /jet.html)? – 2013-01-23 15:20:25
Launch4j怎么样?并检查[this](http://stackoverflow.com/questions/9761518/macos-executable-of-a-jar-file) –
@NikolayKuznetsov Launch4J仅用于构建Windows'.exe'发射器。启动程序的_building_可以在Mac/Linux上完成,但生成的启动程序只能在Windows上运行。 –