Jak wydobyć.pliki wojenne w Javie? ZIP vs JAR

Mam program internetowy, w którym chcę, aby użytkownik mógł importować plik .war i mogę wyodrębnić pewne pliki z pliku .war. Znalazłem dwie biblioteki klas: java.util.zip.* i java.util.jar.*. Z tego, co rozumiem, plik wojenny jest specjalnym plikiem JAR, który jest specjalnym plikiem ZIP. Czy lepiej użyć java.util.jar? Jeśli pliki ZIP i Jar są prawie takie same, dlaczego są potrzebne dwie różne biblioteki?

Author: Tom11, 2011-10-24

8 answers

Jeśli spojrzysz na API JarFile zobaczysz, że jest to podklasa klasy ZipFile .

Klasy specyficzne dla jar najczęściej dodają funkcje specyficzne dla jar, takie jak bezpośrednia obsługa atrybutów plików manifestu i tak dalej.

To OOP "w akcji"; Ponieważ pliki JAR są plikami zip, klasy jar mogą korzystać z funkcji zip i zapewnić dodatkowe narzędzie.

 23
Author: Dave Newton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-24 22:38:55

Plik WAR jest tylko plikiem JAR, aby go wyodrębnić, wystarczy wydać polecenie jar - {–3]}

jar -xvf yourWARfileName.war

Jeśli nie znaleziono polecenia jar, co czasami zdarza się w wierszu polecenia systemu Windows, podaj pełną ścieżkę, tzn. w moim przypadku jest to

 c:\java\jdk-1.7.0\bin\jar -xvf my-file.war
 130
Author: iltaf khalid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-31 18:03:26

Po prostu zmień nazwę .war na .jar i rozpakuj ją za pomocą Winrar (lub innego menedżera archiwum).

 10
Author: Mehdi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-05 13:48:07

Jeśli używasz Linuksa lub Ubuntu, możesz bezpośrednio wyodrębnić dane z pliku .war.

Plik war jest po prostu plikiem jar, aby go rozpakować, wystarczy wydać następujące polecenie za pomocą programu jar:

jar -xvf yourWARfileName.war
 3
Author: Karan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-05 13:19:00

Jak powiedziałeś, jar to Plik zip (Nie specjalny typ, ale zwykły stary zip), więc każda biblioteka może działać. Rozumowanie jest takie, że przeciętny człowiek, widząc *.rozszerzenie zip, ma tendencję do rozpakowywania go. Ponieważ serwer aplikacji chce go rozpakować, prosta zmiana nazwy sprawia, że ludzie nie rozpakowują go po prostu z przyzwyczajenia. Podobnie,*.plik wojenny również powinien pozostać nieskompresowany.

Java.util.jar po prostu dodaje dodatkową funkcjonalność do Javy.util.zamek błyskawiczny z bardzo małym dodatkowe koszty. Niech java.util.jar być pomocnikiem w delegowaniu itp... i użyj go.

 0
Author: Affable Geek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-24 22:37:47

Klasa / pakiet Jar jest przeznaczona dla określonych mechanizmów plików jar, gdzie istnieje manifest, który jest używany przez pliki Jar w niektórych przypadkach.

Klasa/pakiet plików Zip obsługuje wszystkie skompresowane pliki zawierające pliki Jar, które są typem skompresowanego pliku.

Klasy Jar rozszerzają w ten sposób klasy pakietu Zip.

 0
Author: r0ast3d,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-10-24 22:39:26

Możesz użyć funkcji turn-around i po prostu wdrożyć aplikację na serwerze tomcat: wystarczy skopiować / wkleić w folderze webapps. Po uruchomieniu programu tomcat utworzy folder z nazwą aplikacji i będzie można uzyskać bezpośredni dostęp do zawartości

 0
Author: M. Dhaouadi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-11-18 08:57:56

Dla użytkowników komputerów mac: in terminal command:

unzip yourWARfileName.war
 0
Author: Olivier Royo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-03-04 15:51:02