我有一个WAR文件。我想打开它,编辑XML文件,删除一些罐子,然后重新打包。
我使用WINRAR打开WAR文件,我删除了一些Jars并在WinRar中创建了一个“Add to Archive”并创建了一个WAR。
当我在jboss文件夹中部署WAR时,我遇到了异常。
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?
答案 0 :(得分:65)
你可以使用这里提到的java命令从命令行更新你的战争:
jar -uvf test.war yourclassesdir
其他有用的命令:
解压缩/爆炸war文件的命令
jar -xvf test.war
创建war文件的命令
jar -cvf test.war yourclassesdir
答案 1 :(得分: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
答案 2 :(得分:1)
我确信有一些ANT标签可以做到但是在.bat脚本中使用了这个7zip hack。我使用http://www.7-zip.org/命令行工具。我一直用这个来改变j2ee context.xml文件中的jdbc url。
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 :(得分:1)
将war文件复制到/ 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中更新了你的文件。
答案 4 :(得分:0)
也许,您已经修改了战争的结构或将其部署在不同的服务器版本上。查看这些链接Error deploying war into JBoss AS 7 (domain mode): "Failed to process phase STRUCTURE of deployment"和https://community.jboss.org/thread/199387?start=0&tstart=0&_sscc=t
答案 5 :(得分:0)
非编程方式,您只需使用7zip UI打开存档即可添加/删除或提取/替换文件,而不会更改结构。直到现在我还不知道使用其他东西是个问题:)
答案 6 :(得分:0)
不需要那样,tomcat自然地将war文件解压缩到同名的文件夹中。 你只需修改该文件夹中的所需文件(包括.xml配置文件),就是这样。 技术上不需要在应用修改后重启tomcat