2015-09-29 59 views
0

我正在嘗試爲Java應用程序構建安裝程序,並且想構建一個JAR來提取自己。 JAR將使用Maven組件構建,並將在清單中指定一個主類。我想讓主類將JAR的其餘部分提取到指定的目錄中。 JAR將包含其他JAR和一些文檔。我發現了其他問題,例如(How to copy file inside jar to outside the jar?),但它們不涉及自解壓JAR。我想知道如何1)獲取正在執行main的JAR的位置和名稱,2)將JAR的內容複製到指定的目錄中。如何在Java中構建自解壓縮JAR

UPDATE:我也很感謝解決如何爲Maven Java應用程序(使用Eclipse)構建安裝程序的解決方案。

+0

將JAR保持原樣並調用''java -jar MainClass「來執行你的程序的問題是什麼? –

+0

我希望用戶能夠訪問JAR中的文件,例如docs,configuration文件等...我也想單獨運行一些配置文件 –

+0

你可以在JAR中訪問你的文件,那麼爲什麼你需要提取它們? –

回答

0

其實這個答案適用於我:How to write a Java program which can extract a JAR file and store its data in specified directory (location)?除了我想跳過複製主類文件以及跳過在其路徑上創建文件夾,所以如果主類駐留在以「say」開頭的包中,「com 」,則只需添加

if(file.getName().startsWith("com")) 
    continue; 

下面

java.io.File f = new java.io.File(destDir + java.io.File.separator + file.getName()); 
+0

我還是不瞭解它能夠在提取時修改配置文件嗎? –

+0

是的,用戶必須能夠訪問配置文件,文檔等,這些文件被封裝在jar中 –

+0

當你需要更新jar時會發生什麼?文件是替換? –

1

如果你有你想要的用戶更新,然後不包括他們在您的jar文件的配置。你有幾個選擇。

一個是寫出默認配置文件,如果他們不存在。

第二個是使用IzPack提供一個安裝程序jar,它將複製用戶可以編輯的默認配置。

如果你想要一個如何運行IzPack的例子,你可以下載Squirrel,這是一個SQL工具,它使用IzPack自行安裝。

+0

謝謝。不幸的是,我認爲IzPack許可證不允許用於商業用途。 –

+0

嗯... https://izpack.atlassian.net/wiki/display/IZPACK/IzPack+Home ... – khmarbaise

+0

是的,我認爲你是對的。我一定在看網站許可證。 –