Подтвердить что ты не робот

Как распаковать и переупаковать файл WAR

У меня есть файл WAR. Я хотел бы открыть его, отредактировать XML файл, удалить некоторые банки и затем повторно упаковать его.

Я использовал WINRAR, чтобы открыть WAR файл, и я удалил некоторые Jars и сделал "Добавить в архив" в WinRar и создал WAR.

Когда я развернул папку WAR в jboss, я получил исключение.

   16:05:14,316 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-2) 
   MSC00001: Failed to start service jboss.deployment.unit."myapplication.war".
   STRUCTURE: org.jboss.msc.service.StartException in 
   service   jboss.deployment.unit."myapplication.war".STRUCTURE: 
   Failed to process phase STRUCTURE of deployment "myapplication.war"

Как переупаковать WAR?

4b9b3361

Ответ 1

вы можете обновить свою войну из командной строки с помощью java-команд, как указано здесь:

jar -uvf test.war yourclassesdir 

Другие полезные команды:

Команда разблокировать/разбить файл войны

jar -xvf test.war

Команда для создания файла войны

jar -cvf test.war yourclassesdir 

Ответ 2

Я уверен, что есть теги ANT, но они использовали этот взлом 7zip в .bat script. Я использую http://www.7-zip.org/ инструмент командной строки. Все время я использую это для изменения jdbc url в j2ee context.xml файле.

mkdir .\temp-install
c:\apps\commands\7za.exe x -y mywebapp.war META-INF/context.xml -otemp-install\mywebapp
..here I have small tool to replace text in xml file..
c:\apps\commands\7za.exe u -y -tzip mywebapp.war ./temp-install/mywebapp/*
rmdir /Q /S .\temp-install

Вы можете извлечь весь файл .war(его zip в конце концов), удалить файлы, заменить файлы, добавить файлы, изменить файлы и переупаковать в .war архив. Но, изменяя один файл в большом архиве .war, лучше всего извлечь конкретный файл, а затем обновить исходный архив.

Ответ 3

Адаптация к приведенным выше ответам, это работает для Tomcat, но может быть адаптировано для JBoss или любого контейнера:

sudo -u tomcat /opt/tomcat/bin/shutdown.sh
cd /opt/tomcat/webapps
sudo mkdir tmp; cd tmp
sudo jar -xvf ../myapp.war
#make edits...
sudo vi WEB-INF/classes/templates/fragments/header.html
sudo vi WEB-INF/classes/application.properties
#end of making edits
sudo jar -cvf myapp0.0.1.war *
sudo cp myapp0.0.1.war ..
cd ..
sudo chown tomcat:tomcat myapp0.0.1.war
sudo rm -rf tmp
sudo -u tomcat /opt/tomcat/bin/startup.sh

Ответ 5

Не программно, вы можете просто открыть архив с помощью 7zip UI, чтобы добавлять/удалять или извлекать/заменять файлы без изменения структуры. Я не знал, что это проблема с использованием других вещей до сих пор:)

Ответ 6

не нужно, tomcat естественно извлекает военный файл в папку с тем же именем. вы просто изменяете нужный файл внутри этой папки (включая файлы конфигурации .xml), что и все. технически нет необходимости перезапускать tomcat после применения модификаций

Ответ 7

скопируйте свой военный файл в /tmp теперь извлеките содержимое:

cp warfile.war /tmp
cd /tmp
unzip warfile.war
cd WEB-INF
nano web.xml (or vim or any editor you want to use)
cd ..
zip -r -u warfile.war WEB-INF

теперь у вас в файле /tmp/warfile.war обновлен ваш файл.