jar包的解压和重新打包

解压jar包

#解压esb.jar包
jar xvf esb.jar
#解压后有三个目录BOOT-INF/ META-INF/ org/
#删除现有esb.jar
rm -rf esb.jar
#进入依赖目录
cd BOOT-INF/lib
#删除fastjson-1.2.70.jar
rm -rf fastjson-1.2.70.jar 
#上传fastjson-1.2.83.jar
rz
#将所有文件重新压缩成esb.jar包
jar -cvfM0 esb.jar BOOT-INF/ META-INF/ org
#将重新打包的esb.jar放回原来目录

jar 命令详情

[admin@custmer-development-d ~]$ jar help
Illegal option: h
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/ .

用法:jar {ctxui} [vfmn0PMe] [jar文件] [清单文件] [入口点] [-C目录]文件...
选项:
    -c创建新档案
    -t列出要归档的目录
    -x从存档中提取命名(或所有)文件
    -u更新现有档案
    -v在标准输出上生成详细输出
    -f指定归档文件名
    -m包含来自指定清单文件的清单信息
    -n在创建新存档后执行Pack200规范化
    -e指定独立应用程序的应用程序入口点
        捆绑到可执行的jar文件中
    -0只存储;不使用ZIP压缩
    -P从文件名保留前导的“ /”(绝对路径)和“ ..”(父目录)组件
    -M不为条目创建清单文件
    -i为指定的jar文件生成索引信息
    -C更改为指定目录并包含以下文件
如果任何文件是目录,则将对其进行递归处理。
清单文件名称,归档文件名称和入口点名称为
以与“ m”,“ f”和“ e”标志相同的顺序指定。

示例1:将两个类文件归档到名为classes.jar的归档文件中:
       jar cvf classes.jar Foo.class Bar.class
示例2:使用现有清单文件“ mymanifest”并将所有
           foo /目录中的文件放入“ classes.jar”:
       jar cvfm classes.jar mymanifest -C foo /
         

特殊情况
可能会遇到使用jar解压失效的情况,这种情况可能是JDK版本问题,打包时的JDK和解压时的JDK版本不一样,需要保证打包和解压的JDK版本一直性,目前遇到过这种情况。实在不能解压的可以尝试使用360解压,然后再用360压缩

© 版权声明
THE END
喜欢就支持一下吧
点赞7赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容