it-swarm.com.ru

Как извлечь файлы .war в java? Zip против JAR

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

38
user972276

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

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

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

21
Dave Newton

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

jar -xvf yourWARfileName.war

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

 c:\Java\jdk-1.7.0\bin\jar -xvf my-file.war
99
iltaf khalid

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

10
Mehdi

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

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

jar -xvf yourWARfileName.war
1
Karan Rajput

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

Java.util.jar в основном просто добавляет дополнительную функциональность в Java.util.Zip с очень небольшими дополнительными затратами. Пусть Java.util.jar будет помощником в публикации и т.д. ... и используйте его.

0
Affable Geek

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

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

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

0
r0ast3d

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

0
M. Dhaouadi