簡體   English   中英

在適用於Mac OS X的Swing應用程序中嵌入JRE

[英]Embedding a JRE in a Swing application for Mac OS X

我必須發布帶有嵌入式JRE的swing應用程序。 帶有application + JRE + .bat / .sh的壓縮存檔為Windows和Linux提供了技巧。 用戶下載zip,解壓縮並啟動應用程序。 完善。

但是現在,我必須為Mac OS X提供相同的功能。我已經閱讀/被告知有很多不同的事情(禁止在Mac上發布JRE,相反,Mac上總是有JRE等。 ..),所以我真的很困惑我可以做什么。

有沒有人做過這樣的事情? 你是如何解決Mac應用程序部署的? 作為獎勵,在Mac上分發我的應用程序的最佳格式是什么(zip?)?

看一下java.net上的appbundler項目。 它提供了一個Ant任務,它將您的應用程序打包為普通的Mac .app軟件包,並且可以選擇包含嵌入式JRE。

Mac上的整個Java環境有點混亂,因為我們仍然處於過渡時期,Apple 6提供和維護Java 6版本,Java 7版本直接來自Oracle。 通過提到的jarbundler項目a_horse_with_no_name是用於包裹了JAR作為.app ,將在附帶的Mac OS X 10.5 / 6/7的Apple提供的Java 6運行bundle,但不是在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上運行。 但是,當他們嘗試運行您的應用程序時,任何擁有最新Mac但只有Java 7的人都會被提示下載並安裝Java 6。

只要.app內的所有Contents/MacOS目錄(以及嵌入式JRE中的相應文件,如果適用)都在zip文件中標記了執行權限,就可以將.app分發到.zip存檔中。 如果您使用Ant構建,則需要使用帶有正確文件filemode <zipfileset>

最簡單的方法使用與通過Java Web Start部署的任何其他平台相同的JAR。 我從未嘗試過使用它來安裝JRE。

提供更多的Mac友好的體驗, 最好的方法需要你來包裝你的應用程序包JAR(S),在文章中討論引用真實這里 首選的傳遞格式是壓縮磁盤映像.dmg

Mac OS X的Java部署選項一文比較了這兩個選項。 這個游戲是一個可以以任何方式啟動的例子。

附錄:對於好奇,Mac OS X Finder將.jnlp文件視為文檔,默認情況下使用JWS啟動程序打開。 我在dock文件夾中保留了一些常用的.jnlp文件的文件夾,以便快速訪問。 Java Preferences控制面板允許管理緩存的應用程序。 選擇安裝快捷方式會在目標文件夾中創建一個簡單的Mac應用程序包,並且可以像編輯其他任何內容一樣編輯包含的Info.plist 自定義.plist的決定取決於應用程序所需的功能:屏幕菜單欄,停靠欄名稱和圖標,JNI路徑等。

我認為您可以放心地假設JRE已經存在於Mac上。

最好的格式(所以我被告知 - 我自己不是Mac用戶)是“App”包的tar.gz (保存文件屬性)。

您可以使用“jarbundler”( http://sourceforge.net/projects/jarbundler/ )創建一個適當的Mac“捆綁”,可以毫不費力地提取。 確保捆綁包中的Stub在Ant tar任務中標記為“可執行”。

我認為如果安裝了多個JRE,會出現一些問題。 在這種情況下,必須使用正確的Stub來啟動應用程序所需的JRE版本。 如果我/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub話,這個Stub位於/System/Library/Frameworks/JavaVM.framework/Resources/MacOS/JavaApplicationStub

有一個頁面表明Java7和jarbundler可能存在問題: http ://informagen.com/JarBundler/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM