看一看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上運行。 –