2014-07-23 36 views
0

我已經創建了jar文件來執行一些文件操作,我需要將它們分發給網絡上的一些人。但令我驚訝的是,這個jar不能在他們的機器上運行!我被告知另一項工作是通過安裝Java開發人員工具包來運行它,但如果我需要分發給多個人,這不是最好的方式。在其他機器上運行jar文件嗎?

這裏有什麼我的選擇,什麼是'最佳實踐'解決方案?我寧願不安裝JDK(我想我只需要JRE,但沒有經過測試),我是否可以簡單地將jar重寫爲applet,以便它可以在瀏覽器中運行?或者我應該彈出一個鏈接到最新的JRE版本並要求他們下載它?

編輯:我通過eclipse(Export> Runnable Jar)創建了jar,它產生了一個我可以運行的可運行jar。當移動到另一臺機器時,windows不知道用什麼打開文件。看起來我需要JRE(我們在我們的機器上安裝的java只是瀏覽器插件,而不是我找到的JRE)。我想知道是否有辦法在我的最後做更多的工作來阻止這樣做最終用途會更簡單一些(Launch4j已經被提出並且正在被我們採用,或者簡單地手動安裝)。我在java中使用了一些類,但它們是純粹的編碼,從來沒有涉及到jar應該如何「分佈式」 。

+0

正確版本的‘*罐子是不是可以運行在自己的機器*’你是怎麼創造這個罐子?你是否設置了其中還有'public static void main(String [] args)''的主類? – Pshemo

+1

@Pshemo他說在沒有jre/jdk存在的機器上運行jar – Sanjeev

+0

jar是否在你的機器上運行?什麼東西在其他機器上不起作用(什麼都不做,錯誤信息,...)?什麼操作系統和JRE安裝? – pascalhein

回答

4

Java程序需要JRE來運行。對於可運行的jar和小程序來說也是如此。

您可以使用jnlp爲您自動下載JRE,但由於applet和webstart幾乎都被棄用,所以這可能不是要走的路。

在運行程序之前,您可以告訴用戶他們需要在他們的機器上安裝JRE。這是非常合理的,因爲大多數人都有JRE,但如果您的用戶擁有較舊版本的JRE並且您正在編譯更新版本,則它可能會變得複雜。

您也可以使用類似JWrapperLaunch4J的程序將JRE與您的程序捆綁在一起。這將保證你的程序可以在任何客戶端機器上運行,但這意味着你必須爲每個操作系統創建單獨的版本,並且由於必須將JRE包含在項目中,因此下載大小將大大增加。

不幸的是,沒有任何真正的最佳實踐可以幫助您。根據我的經驗,大多數小型項目只需要安裝JRE,而大多數大型項目(如Puppy Games的遊戲)將JRE捆綁在程序本身內。這真的取決於你。

+0

webstart已被棄用? –

+0

我提到applet選項,因爲我們在所有機器上都安裝了'java',這意味着有點含糊。我以爲它只安裝它的瀏覽器,我希望如果我推動它,我將能夠使用已安裝的東西。當我們'安裝java'時它安裝了什麼?它必須是某種JRE,但我認爲它僅適用於瀏覽器? – user3728545

+0

@KalpeshSoni Applets和webstarts現在要求您要麼有付費證書,要麼讓用戶更改其安全設置。無論哪種方式,它們都會向用戶顯示大量可怕的消息,目前還不清楚瀏覽器會支持多長時間。他們不被棄用,但現在開始使用它們是一個壞主意。 –

-1

你總是可以編寫一個Web應用程序 - 每個人都有一個瀏覽器

,如果你想Java代碼來運行你需要JDK/JRE - 你可以得到含罐子和JRE爲「安裝一個笨拙的方式zip文件「您的應用程序

JNLP或在webstart可以幫助客戶加載JRE

相關問題