2011-10-24 91 views
32

我有一個網絡程序,我希望用戶能夠導入.war文件,並且我可以從.war文件中提取某些文件。我找到了兩個類庫:java.util.zip.*java.util.jar.*。據我所知,WAR文件是一個特殊的JAR文件,它是一個特殊的ZIP文件。那麼使用java.util.jar會更好嗎?如果ZIP和JAR文件幾乎相同,爲什麼需要兩個不同的庫?如何在java中提取.war文件? ZIP vs JAR

+0

你將與WAR文件裏的文件怎麼辦? –

回答

17

如果你看看JarFile API,你會發現它是ZipFile類的一個子類。

特定於jar的類大多隻是添加特定於jar的功能,如直接支持清單文件屬性等。

它是OOP「in action」;由於jar文件是zip文件,jar類可以使用zip功能並提供額外的實用程序。

+3

關於正確和接受的答案的下降是讚賞。 –

0

像你說的,一個罐子一個zip文件(不是一個特殊類型,而只是一個普通的舊拉鍊),所以無論是圖書館可以進行工作。理由是,看到* .zip擴展名的普通人往往會將其解壓縮。由於應用程序服務器需要解壓縮,所以簡單的重命名可以防止人們將其從習慣中解壓縮。同樣,* .war文件也應該保持未壓縮狀態。

java.util.jar基本上只是在java.util.zip中增加了額外的功能,但額外的開銷很小。讓java.util.jar成爲發佈等方面的助手,並使用它。

0

Jar類/包用於特定的Jar文件機制,在某些情況下存在由Jar文件使用的清單。

Zip文件類/包處理所有包含Jar文件的壓縮文件,這是一種壓縮文件。

Jar類因此擴展了Zip包類。

81

WAR文件只是一個JAR文件,將其解壓,只是發出以下jar命令 -

jar -xvf yourWARfileName.war 

如果沒有找到jar命令,有時發生在Windows命令提示符,然後指定完整路徑即在我的情況是,

c:\java\jdk-1.7.0\bin\jar -xvf my-file.war 
+0

我用這個命令並提取.war文件..但所有這些都去bin文件夾..可以粘貼命令選擇提取位置 –

+0

http://stackoverflow.com/questions/15830952/extracting-jar-to-specified -directory –

+1

在Java中,OP問道。 –

8

只需重命名.war.jar和使用Winrar(或任何其他歸檔管理器)解壓縮。

1

如果您使用的是Linux或Ubuntu,則可以直接從.war文件中提取數據。

一個war文件只是一個jar文件,使用jar程序提取它,只是發出以下命令:

jar -xvf yourWARfileName.war