修改jar/war包中文件

1、查看jar中文件

jar -tvf abc.jar

eg.

d:\tmp\test\20210619>jar -tvf asm-util-3.2.jar
   211 Tue Jul 07 00:05:20 CST 2009 META-INF/MANIFEST.MF
   165 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/ASMifiable.class
  3701 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/ASMifierAbstractVisitor.class
  1908 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/ASMifierAnnotationVisitor.class
  6484 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/ASMifierClassVisitor.class
   260 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/ASMifierFieldVisitor.class
  6518 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/ASMifierMethodVisitor.class
  2967 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/AbstractVisitor.class
  2068 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/CheckAnnotationAdapter.class
  8438 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/CheckClassAdapter.class
  1132 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/CheckFieldAdapter.class
  1589 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/CheckMethodAdapter$1.class
 14241 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/CheckMethodAdapter.class
  2879 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/CheckSignatureAdapter.class
  1962 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/TraceAbstractVisitor.class
  4204 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/TraceAnnotationVisitor.class
  6422 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/TraceClassVisitor.class
   727 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/TraceFieldVisitor.class
  7812 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/TraceMethodVisitor.class
  3382 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/TraceSignatureVisitor.class
   145 Tue Jul 07 00:05:22 CST 2009 org/objectweb/asm/util/Traceable.class

 

 2、解压jar中文件

// 指定待解压的jar中目录,不指定默认解压整个jar包
jar -xvf abc.jar a/b/c

// 仅解压jar包中单个文件
jar -xvf strs-dist-hadoop-prod.jar logback.xml

 

3、更新jar中文件

// 更新指定目录下的所有文件
jar -uvf abc.jar a/b/c

//更新单个文件
jar -uvf strs-dist-hadoop-prod.jar logback.xml
  • 文件夹a与abc.jar在同级目录
  • 不指定文件夹a/b/c,默认当前目录为待更新的目标目录
  • 覆盖更新指定目录的文件,原jar中不涉及的文件不做修改,亦不删除

例如:更新多个目录文件,(m表示包含MANIFEST.MF文件)

jar -uvf kafka_2.10-0.9.0.1.jar abc/* bb/*

 

4、创建jar包

// 将当前目录下所有文件打包
jar -cvf abc.jar ./*
  • 创建jar包abc.jar,如果不存在,如果存在则覆盖
  • 可以指定jar的存放路径,执行目录必须是需打包文件的根目录并且文件路径为相对路径

例如:指定多个目录打包,打好的jar包存放在根目录上一级目录

jar -cvf ./../abc.jar ./META-INF/* ./bb/* kk.log LICENSE NOTICE ./kafka/*

 

 5. 要替换的文件在war包的其他目录

# 如果不知道想改的文件在哪个目录,可以用 grep 查看下
[xuwu@localhost ~]$ jar tvf test.war | grep application.yml
   507 Tue Dec 25 09:45:48 CST 2018 WEB-INF/classes/application.yml

## 解压该文件,该目录下会生成该文件的目录结构
[xuwu@localhost ~]$ jar xvf test.war
[xuwu@localhost ~]$ ll
drwxrwxr-x 3 xuwu xuwu     4096 12月  6 21:54 META-INF
drwxrwxr-x 4 xuwu xuwu     4096 12月  6 21:54 WEB-INF

## 修改 WEB-INF/classes/application.yml 修改的内容,然后替换 war 包相应文件
[xuwu@localhost ~]$ jar uvf test.war WEB-INF/classes/application.yml

 

6. 使用工具直接更新文本文件(7zip)

6.1 修改jar, war, ear包中的文件:
如果是修改,那证明基本上你要修改的不可能是class文件或jar文件,一定是什么xml,properties等被打包在压缩包中的文件,这时就用7z出马了,直接打开压缩,编辑,即可:

编辑之后保存,

 

 

6.2 删除jar, war, ear包中的文件:
7z打开,直接删除

 

转自:

https://www.cnblogs.com/defall/p/9384392.html

https://xwlearn.com/howto-replace-file-in-war-package/

https://blog.csdn.net/u013613428/article/details/51669882

 

posted @ 2021-06-20 00:20  ck_2016  Views(973)  Comments(0Edit  收藏  举报