簡體   English   中英

我應該如何將Java與Windows應用程序捆綁在一起?

[英]How should I bundle Java with my Windows application?

我有一個基於Java的Windows應用程序,我想用Java捆綁安裝。 安裝框架是NSIS。 應該保證應用程序可執行文件調用捆綁的Java,因此不會與系統中安裝的其他Java發生沖突。

實現目標的最佳方法是什么? 我之前沒有嘗試解決這類問題,並且對Java幾乎沒有經驗,所以我不知道那里有哪些解決方案。 如果可行的話,我想我更喜歡將Java嵌入到應用程序的可執行文件中,否則我猜Java可以與它一起安裝(可執行文件指向Java)。

編輯:此項目已通過NSIS生成可執行文件(.exe)。 可執行文件默認使用系統Java,但顯然它更喜歡同一目錄中的JRE(即捆綁)(如果存在)。

編輯2 :讓我想用這個應用程序捆綁Java的場景是我收到了一個用32位Java構建的可執行文件,它在我的64位Java系統上失敗了(靜默)。

你絕對確定你不想使用電腦JRE嗎? 在大多數情況下,這是更可取的。 您可以在此處 (以及包含的鏈接)查看安裝程序的一些示例,這些示例檢查JRE編號並在必要時(全局)安裝它。

如果您真的希望在安裝程序中包含自己的JRE並始終使用它 - 是什么阻止您這樣做? 這只是你的主程序點有一些方法來解決JRE位置和強制使用它。 這取決於您打包/調用Java程序的方式。 通常情況下,這可能是一個簡單的.bat文件 - 可能是在安裝時創建的。

launch4j似乎提供捆綁嵌入式JRE。

我們使用的解決方案(幾年前,但我認為最好的方法)。

找到一個可以從jar文件生成exe文件的程序(谷歌是你的朋友,我記不起名字了)。 請注意,此.exe文件仍需要jre。 它只是一個聰明的方法來創建一個包含.jar文件的exe文件,並自動啟動java進程。 (這也允許您在.exe文件上設置自定義圖標)。

用於開發/編譯java應用程序的java sdk,還包含一個名為jre的文件夾,其中包含jre的副本。

在安裝程序中包含此文件夾,因此jre文件夾與.exe文件位於同一文件夾中。 然后.exe文件將使用包含的jre,並且jre將不會安裝在計算機上,因此您可以防止出現任何問題。

一個非常簡單的解決方案,如果你不需要獲得可執行文件,它實際上非常好用,只是使用一個簡單的Windows批處理文件來啟動jar並有一個快捷方式,這樣你就可以得到它的首選圖標。 對於普通用戶而言,沒有什么真正的區別 - 畢竟默認是在Windows上抑制已知的擴展(可怕的默認但很好) - 對於那些知道exe是什么的人來說,解決方案應該是非常明顯的。

這樣你也可以輕松啟動包含java或者更好的同時提供兩個版本,只需更改ini文件中的變量,這真的更好 - 沒人想要或需要X個不同的JRE版本,這些版本已經過時,只不過是安全問題。 對於沒有安裝java的人來說,提供一個包含JRE的版本仍然可以讓它變得盡可能簡單。

這種行為的一個例子是weka ..

暫無
暫無

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

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