Как извлечь файлы .war в java? ZIP против JAR - PullRequest
41 голосов
/ 25 октября 2011

У меня есть веб-программа, в которую я хочу, чтобы пользователь мог импортировать файл .war, и я могу извлечь определенные файлы из файла .war. Я нашел две библиотеки классов: java.util.zip.* и java.util.jar.*. Насколько я понимаю, WAR-файл - это специальный JAR-файл, который представляет собой специальный ZIP-файл. Так будет ли лучше использовать java.util.jar? Если файлы ZIP и JAR практически одинаковы, зачем нужны две разные библиотеки?

Ответы [ 7 ]

105 голосов
/ 29 января 2013

WAR-файл - это просто JAR-файл, чтобы распаковать его, просто введите следующую команду jar -

jar -xvf yourWARfileName.war

Если команда jar не найдена, что иногда происходит в командной строке Windows, то укажите полный путь, т.е. в моем случае это

 c:\java\jdk-1.7.0\bin\jar -xvf my-file.war
21 голосов
/ 25 октября 2011

Если вы посмотрите на API JarFile , вы увидите, что это подкласс класса ZipFile .

Классы, специфичные для jar, в основном просто добавляют jar-специфичные функциональные возможности, такие как прямая поддержка атрибутов файла манифеста и т. д.

Это ООП "в действии";поскольку jar-файлы являются zip-файлами, jar-классы могут использовать zip-функциональность и предоставлять дополнительную утилиту.

11 голосов
/ 27 ноября 2013

Просто переименуйте .war в .jar и разархивируйте его, используя Winrar (или любой другой менеджер архива).

1 голос
/ 03 февраля 2015

Если вы используете Linux или Ubuntu, вы можете напрямую извлечь данные из .war файла.

Файл war - это просто файл jar, чтобы извлечь его, просто введите следующую команду с помощью программы jar:

jar -xvf yourWARfileName.war
0 голосов
/ 18 ноября 2018

Вы можете использовать оборот и просто развернуть приложение на сервере Tomcat: просто скопируйте / вставьте в папку webapps. После запуска tomcat он создаст папку с именем приложения, и вы сможете получить доступ к содержимому напрямую

0 голосов
/ 25 октября 2011

Jar-класс / пакет предназначен для определенных механизмов файлов Jar, где существует манифест, который в некоторых случаях используется файлами Jar.

Класс / пакет Zip-файлов обрабатывает любые сжатые файлы, включая файлы Jar, которые являются типом сжатых файлов.

Таким образом, классы Jar расширяют классы пакета Zip.

0 голосов
/ 25 октября 2011

Как вы сказали, jar - это zip-файл (не специальный тип, а просто старый zip-файл), поэтому любая библиотека может работать.Причина заключается в том, что обычный человек, увидев расширение * .zip, стремится его распаковать.Поскольку сервер приложений хочет, чтобы он был разархивирован, простое переименование не дает людям просто разархивировать его по привычке.Аналогично, файл * .war также должен оставаться несжатым.

java.util.jar в основном просто добавляет дополнительную функциональность в java.util.zip с очень небольшими дополнительными издержками.Пусть java.util.jar будет помощником в публикации и т. Д. И использует его.

...