簡體   English   中英

如何通過雙擊單個文件來分發我的Java程序以使其可以運行?

[英]How to distribute my Java program so that it is runnable by double-clicking a single file?

我有一個Java富客戶端桌面應用程序。 我想在工作中的某些計算機上分發,但我以前從未做過類似的事情。 在我的工作場所,人們不會太貪圖電腦,因為這是學生的工作,我不會在那里工作太長時間,如果我能讓人們加倍使我的程序易於運行,我會喜歡它-點擊它。

我也不想手動安裝JRE來讓它運行。 基本上,我想知道的是如何通過雙擊使得我的java應用程序可以輕松運行(即使它只在Windows上運行,也沒關系)。 我很確定我需要將正確的JRE版本打包在一起,但我不知道這樣做的正確方法是什么。

我在一些網站上看到你不應該將JRE和你的程序打包在一起,因為它會讓人們擁有多個不同的版本,其中一些版本已經過時,並且會導致安全問題,但是在這種情況下這不是問題,因為計算機是將要運行我的應用程序沒有連接到互聯網,無論如何只用於運行此程序。

一些相關的問題:由於我的應用程序目前是一個Eclipse項目,我使用相對路徑(例如: img/test.png )獲取我的資源,如圖標,圖像,SQLite數據庫(用於讀取和寫入)等。

我是否必須改變任何這些路徑,讓它們在打包時繼續工作?

您正在尋找的是一個JAR文件。 在eclipse中,制作一個Jar文件非常容易。 具體來說,您需要右鍵單擊項目,轉到“導出”,然后選擇“Runnable Jar”。 小心文件夾的路徑。 您可能需要在Jar文件旁邊保留一個資源文件夾。 您可能需要提供一些更具體的信息才能獲得准確答案。 通常,Resources文件夾與JAR文件位於同一位置(在計算機上的同一文件夾中)。

更輕松安裝Java應用程序的更好選擇。 使用GUI是使用Java Web Start啟動它。 對於用戶來說,JWS是“一鍵式”安裝選項,可以(安裝和啟動應用程序。然后)添加桌面快捷方式和菜單項。 JWS的推出對您來說意味着更多的工作,但對最終用戶來說這是輕而易舉的事。

要確保運行應用程序存在合適的JRE,請使用deployJava.js (有關更多詳細信息,請參閱JWS鏈接)。 需要重新配置腳本以從本地網絡獲取JRE安裝程序 - 默認是從Oracle獲取它。

大多數資源應打包在Jar文件中並隨應用程序一起提供,但對於數據庫,請使用JNLP ExtensionInstallerService來調用數據庫安裝程序。


..Java Web Start是一種鏈接(或者我可以使它成為桌面上的快捷方式),如果未安裝JRE,用戶將單擊以安裝JRE並運行程序,或者只運行程序JRE出現在計算機上。

它的工作方式是在本地Intranet上有一個網頁。 當用戶訪問該頁面時,該腳本會檢查合適的JRE。

  • 如果存在,則將鏈接寫入啟動文件。
  • 如果沒有JRE,或者版本太低,它將引導用戶安裝它(只是在提示時單擊“確定”)。 然后它會將鏈接放到應用程序中。

然后,我可以配置鏈接以從我們網絡上的服務器獲取JRE。

這是您需要重新配置腳本的部分。 AFAIR腳本公開了一個URL,在該URL上可以查找JRE - 可以將其更改為指向Intranet上的某個位置。

..所以“Web”只是在名稱中,計算機不必連接到互聯網就可以完成這項工作,對吧?

是。 JWS是Java富客戶端的一種出色的啟動技術,但它是一個選擇不當的名稱。

要通過雙擊運行來解決問題,可以將其作為jar文件或批處理文件分發以調用jar文件。
對於安裝部分,您可以創建一個批處理文件來檢查java是否存在,然后調用安裝程序(如果不存在)。
編輯:
批次代碼:

IF DEFINED JAVA GOTO ok
java-installer.exe
GOTO end
:ok
your-application.jar
:end

如果您發現很難實現上述方法。 您可以繼續這種簡單的方法。

在某個位置創建一個文件夾lib。 將您的應用程序使用的所有罐子放入其中。 如果您能夠為您的應用程序創建一個jar,那么您也可以將application.jar放入lib文件夾中。 在同一位置創建一個批處理文件,其中包含主類的java命令。 批處理中的文本可能看起來與此類似:

set path="\lib\"
java -cp %path% package1.package2.MainClass

如果您有任何其他依賴項,例如:如果您在img / icon.jpg下的代碼中使用圖像。 然后你只需要將img文件夾移動到這個位置。

只需使用winrar壓縮這些文件並分享即可。 解壓縮后運行批處理文件將啟動java MainClass,而不管它在客戶端系統中的放置位置。

PS:如果您無法為應用程序創建jar並將其放在lib文件夾中,只需將bin文件夾與類文件一起復制並粘貼到該位置並相應地更改批處理文件以查找bin中的類。

暫無
暫無

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

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