最近在搞一个替换登录页面的任务 然后给的是一个单点登录的war包 需要修改war包里的文件
我之前就暴力用360好压直接修改 修改个html还是可以的 但是把其他静态资源替换的时候
报错:java.lang.IllegalArgumentException: MALFORMED
显然war包被破坏了 起不来了。。
然后我又用jar xvf解压后 替换文件 然后jar cvf再重新创建一个war包
又报错:no main manifest attribute
那我们应该怎么修改呢?
1.将war包移动到一个干净的路径下,使用jar xvf ROOT.war
命令将war进行解压操作
//解压war包
2.修改相应的文件内容 //修改想要修改的文件,比如web.xml
3.使用jar uvf ROOT.war WEB-INF/web.xml
我学会了 您学会了嘛?
最后附上jar下的命令参数
[root@node-172161644 ~]# jar
Usage: jar {ctxui}[vfmn0PMe] [jar-file] [manifest-file] [entry-point] [-C dir] files ...
Options:
-c create new archive
-t list table of contents for archive
-x extract named (or all) files from archive
-u update existing archive
-v generate verbose output on standard output
-f specify archive file name
-m include manifest information from specified manifest file
-n perform Pack200 normalization after creating a new archive
-e specify application entry point for stand-alone application
bundled into an executable jar file
-0 store only; use no ZIP compression
-P preserve leading '/' (absolute path) and ".." (parent directory) components from file names
-M do not create a manifest file for the entries
-i generate index information for the specified jar files
-C change to the specified directory and include the following file
If any file is a directory then it is processed recursively.
The manifest file name, the archive file name and the entry point name are
specified in the same order as the 'm', 'f' and 'e' flags.
Example 1: to archive two class files into an archive called classes.jar:
jar cvf classes.jar Foo.class Bar.class
Example 2: use an existing manifest file 'mymanifest' and archive all the
files in the foo/ directory into 'classes.jar':
jar cvfm classes.jar mymanifest -C foo/ .
-c 创建新的 JAR 文件包
-t 列出 JAR 文件包的内容列表
-x 展开 JAR 文件包的指定文件或者所有文件
-u 更新已存在的 JAR 文件包 (添加文件到 JAR 文件包中)
[vfm0M] 中的选项可以任选,也可以不选,它们是 jar 命令的选项参数
-v 生成详细报告并打印到标准输出
-f 指定 JAR 文件名,通常这个参数是必须的
-m 指定需要包含的 MANIFEST 清单文件
-0 只存储,不压缩,这样产生的 JAR 文件包会比不用该参数产生的体积大,但速度更快
-M 不产生所有项的清单(MANIFEST〕文件,此参数会忽略 -m 参数
[jar-文件] 即需要生成、查看、更新或者解开的 JAR 文件包,它是 -f 参数的附属参数
[manifest-文件] 即 MANIFEST 清单文件,它是 -m 参数的附属参数
[-C 目录] 表示转到指定目录下去执行这个 jar 命令的操作。它相当于先使用 cd 命令转该目录下再执行不带 -C 参数的 jar 命令,它只能在创建和更新 JAR 文件包的时候可用。 参考博客: https://www.cnblogs.com/uftwkb24/p/9791759.html https://www.cnblogs.com/wangshuo1/p/5697746.html