在Windows上運行Java軟件的最佳方式是什麼?是否有寫入.BAT文件的標準,可以發現機器上最新安裝的JRE?有沒有任何Maven插件?與可執行Jar文件有什麼關係?打包Java軟件以在Windows上運行的最佳方式是什麼?
回答
毫無疑問,我建議您使用Java Web Start,因爲它允許您輕鬆控制所使用的版本(以及目前爲止更容易使用的更新機制)。
取決於你需要什麼。
我們發現使用One-JAR + JSmooth可以提供非常好的用戶體驗,因爲它允許我們分發一個可以放在用戶系統任何位置的EXE文件,而不是安裝二進制文件,需要安裝和卸載等。等等。JSMooth檢查是否存在適當的Java運行時,並且如果沒有發現,則重定向到官方下載站點。
One-jar的原因是,你通常需要使用最好有獨立的庫jar,但JSmooth只允許一個jar文件。
此外,One-Jar SDK和JSmooth可以在不綁定Windows的情況下編寫腳本,因此我們可以在運行在Linux上的Hudson引擎上構建新版本。
在過去,我使用了像launchForJ這樣的java安裝程序包。但是,許多這些軟件包使用Java,因此您可能需要使用本地windows代碼編寫的批處理或簡單可執行文件,以快速檢查Java是否已安裝,然後運行安裝程序。
由於Java在安裝過程中使用系統變量,因此應該能夠以這種方式檢查您需要的版本(或更高版本)是否存在。
標準的方法是使用Java Web Start。
使用Java Web Start技術,獨立的Java軟件應用程序可以通過單擊網絡進行部署。 Java Web Start的確保應用程序的最新版本將被部署,以及正確版本的Java運行時環境(JRE)的
Maven有一個Webstart Maven Plugin幫助構建可通過Web部署的應用程序軟件包開始。
另一種解決方案是使用跨平臺安裝程序生成器來生成安裝程序。我個人很喜歡IzPack(我認爲這JSmooth是非常相似的,但我有一個的IzPack更多的經驗),如果你是專門針對Windows平臺上,你可以使用的IzPack來Build [a] Native Windows Installers with IzPack Native Launcher:
的問題仍然的IzPack出現當 目標系統沒有安裝JRE 。用戶首先需要安裝 ,然後運行IzPack 安裝程序。這與Linux或BSD用戶 不存在問題,因爲他們通常是熟練的,並且他們知道如何通過手動或使用包裝 系統(RPM,DEB,ebuilds,端口, ...)來執行此操作。同樣,一個Mac OS X用戶 沒有太大的問題,因爲它是 可用於操作系統。 但是在Windows平臺上,情況更復雜 ,因爲 必須安裝JRE。更糟糕的是, 幾個實例可以安裝在 一個有時凌亂的情況。
IzPack Native Launcher試圖通過 來解決這個問題。它是一個C++原生 應用程序,可在 下獲得非常寬鬆的MIT許可證,而 可將wxWidgets用於GUI。它是 因此是跨平臺的(對於 歷史學家:它最早是在 上開發的一個FreeBSD框),但大多數人會在 上需要它。它使用一個簡單的 配置文件,並將首先檢查一個JRE的 。如果可以找到, 它會彈出一個對話框,讓下面的 選項之間的 用戶選擇:
- 手動從互聯網上指定一個JRE位置
- 下載一個
- 安裝一個這是由包裝商提供的(如果有的話)。
IzPack還提供Maven Plugin。值得支票。
即使對Java 6進行了大修,Java WebStart仍然不知道如何處理更新,如「有新版本,在後臺下載?」正常。 – 2010-07-09 13:05:07
@Thorbjørn事實上,不是JWS如何工作,你必須要求用戶重新啓動他們的應用程序。 – 2010-07-09 13:21:30
,然後他們必須下載完整的升級之後才能繼續工作......感嘆.. – 2010-07-10 21:27:55
- 1. 在Linux上提供Java軟件的最佳方式是什麼?
- 2. 什麼是更新TextMate軟件包的最佳方式?
- 3. 在Java中運行JavaScript的最佳方式是什麼?
- 4. 在Java中開發遊戲的最佳軟件包是什麼?
- 5. 在Hadoop上運行Lucene/Solr的最佳方式是什麼?
- 6. 在aws上運行django項目的最佳方式是什麼?
- 7. 在運行時替換控件的最佳方式是什麼?
- 8. 什麼是測試郵件列表軟件的最佳方式?
- 9. 在Windows 2003上運行Jabber/XMPP的最佳選擇是什麼?
- 10. 在同一臺計算機上運行的Python軟件之間進行通信的最佳方式是什麼?
- 11. 什麼是存儲軟件文檔的最佳方式?
- 12. 什麼是控制Flex + PHP軟件版本的最佳方式?
- 13. 什麼是促進軟件合作的最佳方式org
- 14. 集成Picasa和JSF軟件的最佳方式是什麼?
- 15. 什麼是在網頁上「包裝文本」的最佳方式
- 16. 打包iPhone/iPad靜態庫的最佳方式是什麼?
- 17. 爲Python打包C代碼的最佳方式是什麼?
- 18. 打包工作日的最佳方式是什麼?
- 19. 什麼是在emacs中運行守衛的最佳方式
- 20. 使方法運行異步的最佳方式是什麼?
- 21. 在Emacs中進行Java開發的最佳方式是什麼?
- 22. 在Windows中異步運行多次PHP腳本的最佳方式是什麼?
- 23. 在Windows 7中運行Linux虛擬服務器的最佳方式是什麼?
- 24. 在PHP中包含文件的最佳方式是什麼?
- 25. 在Java中創建XML文件的最佳方式是什麼?
- 26. 在java程序運行之間存儲數據的最佳方式是什麼?
- 27. 在Android上進行SMS_RECEIVED工作的最佳方式是什麼?
- 28. 從命令行運行中小型Java程序的最佳方式是什麼?
- 29. 在Mongo的數據上運行Map/Reduce的最佳方式是什麼?
- 30. 在MySQL的大型表上運行INNER JOIN的最佳方式是什麼?
+1爲標準Web Start解決方案 – 2010-07-08 16:14:57