jar - Manipulates Java Archive (JAR) files.

jar命令是一种通用的存档和压缩工具,基于ZIP和ZLIB压缩格式。

常用格式:

* 创建jar文件

jar c[efmMnv0] [jarfile] [manifest] [-C dir] file

* 更新jar

jar u[efmMnv0] [jarfile] [manifest] [-C dir] file

* 解压jar

jar x[vf] [jarfile] file

* 列出jar目录文件

jar t[vf] [jarfile] file

* jar文件添加索引

jar i jarfile [-Joption ...]

常用选项:

  • -c :创建新har文件
  • -t :列出档案目录
  • -x :从档案中提取指定的(或所有)的文件
  • -u :更新现有档案
  • -v :输出详细信息
  • -f :指定档案名
  • -m :包含指定清单文件中的清单信息
  • -M :不创建条目的清单文件
  • -i :为指定的jar文件生成索引信息
  • -C :更改为指定的目录并包含以下文件

**示例:**
```
~]# jar xf businessShopService-1.0.jar BOOT-INF/lib/ #解压出BOOT-INF/lib目录
~]# ls
]# ls
BOOT-INF businessShopService-1.0.jar test.class

~]# rm -rf BOOT-INF

~]# jar -xf businessShopService-1.0.jar #解压jar包,后还可根jar包内目录路径,只解压出某个你想要的路径

~]# ls

BOOT-INF businessShopService-1.0.jar META-INF org test.class

~]# jar -tf businessShopService-1.0.jar #查看jar包内所有文件路径

<br />

添加文件进jar包:

这里我们给此jar包org内添加test目录和目录下的test.class文件

~]# jar tf commons-beanutils-1.9.3.jar | grep "org/test"

~]# ls

commons-beanutils-1.9.3.jar test.class

~]# cat test.class

hello world

~]# mkdir org/test -p

~]# mv test.class org/test/ #这里新增的文件路径得和jar包内的目录对应起来,不然会提示没有这个文件或目录。

~]# jar uvf commons-beanutils-1.9.3.jar org/test/test.class #将文件增加进jar包的相应目录下,如jar包中没有此目录,则会自动创建

adding: org/test/test.class(in = 12) (out= 14)(deflated -16%)

~]# jar tf commons-beanutils-1.9.3.jar | grep "org/test" #文件加入成功。

org/test/test.class

查看jar包内新增文件内容是否正确

~]# cat $(jar tf commons-beanutils-1.9.3.jar| grep test.class)

hello world

<br />

替换jar包内容:

修改test.class内容

~]# echo "hello world! " > org/test/test.class

替换文件,操作与新增一致。

~]# jar uvf commons-beanutils-1.9.3.jar org/test/test.class #将文件增加进jar包的相应目录下,如jar包中没有此目录,则会自动创建

adding: org/test/test.class(in = 12) (out= 14)(deflated -16%)

~]# jar tf commons-beanutils-1.9.3.jar | grep "org/test" #文件加入成功。

org/test/test.class

查看jar包内替换文件内容是否正确

~]# cat $(jar tf commons-beanutils-1.9.3.jar org/test/test.class) #路径是jar包内文件的路径

hello world!

<br />

多个不同目录下文件更新。打入包的规则是,有则覆盖,没有则新增。所以有多个文件需要更新时,只需要把要更新的文件的目录结构创建好,直接更新目录即可。

]# jar uvf commons-beanutils-1.9.3.jar org/ #后直接写目录即可。

...

<br />

参考博客:[https://blog.csdn.net/sparkstrike/article/details/61922307](https://blog.csdn.net/sparkstrike/article/details/61922307)

jar - 操作jar包的工具的更多相关文章

  1. 查找对应jar的maven包

    当原有项目换成maven项目时,往往不知道具体jar包在maven里叫什么.这边文章教你如何去找到自己想要的jar的maven包. 工具/原料   浏览器 方法/步骤   1 登录一下网站 http: ...

  2. Java 操作jar包工具类以及如何快速修改Jar包里的文件内容

    需求背景:写了一个实时读取日志文件以及监控的小程序,打包成了Jar包可执行文件,通过我们的web主系统上传到各个服务器,然后调用ssh命令执行.每次上传前都要通过解压缩软件修改或者替换里面的配置文件, ...

  3. 修改jar包配置文件的正确操作,jar包解压出来的文件夹重新打成jar,不依靠开发工具!!!!

    修改jar包配置文件的正确操作,有的时候通过一些解压工具可以对内部的文件进行修改,但是有时候会无效.这就很烦了 一.背景:       有一个springboot项目,事先我已经用编译好打成jar包以 ...

  4. 07_数据库创建,添加c3p0操作所需的jar包,编写c3p0-config.xml文件,编写User.java,编写jdbcUtils.java实现操作数据库的模板工具类,UserDao编写,Dao

     1  创建day14数据库,创建user.sql表: A 创建数据库 day14 B 创建数据表 users create table users ( id int primary keyaut ...

  5. 自己动手写文件查找,字符串查找,查询jar包等工具

    文件查找——搜索当前目录下的文件 知道大概的文件名称,使用 findf FileName findf.py import argparse, re, os from os.path import jo ...

  6. java -jar 执行jar包出现 java.lang.NoClassDefFoundError

    我用idea工具将自己开发java程序打成一个可执行的jar包,当然用eclipse或者直接用jar命令行都无所谓,本质都是将程序归档到一个压缩包,并附带一个说明清单文件. 打jar的操作其实很简单, ...

  7. jar与war 包解压

    JAR包是Java中所特有一种压缩文档,其实大家就可以把它理解为.zip包.当然也是有区别的,JAR包中有一个META-INF\MANIFEST.MF文件,当你找成JAR包时,它会自动生成.JAR包是 ...

  8. Android 编程下如何修改 jar 文件的包名

    首先我们要说说为什么要修改 jar 文件的包名,jar 包我们会非常高频率的使用,尤其是用一些其他三方库的时候,往往把 java 代码打包成 jar 文件,方便项目依赖使用.笔者在开发过程中遇到过一些 ...

  9. swt生成、jar可执行包生成.exe可执行文件(giter)

    http://tomfish88.iteye.com/blog/1074786 —————————————————————————————————————————————————————————— 最 ...

随机推荐

  1. 今天使用Jmeter时遇到的几个问题及解决方法

    JDBC Request :Cannot load JDBC driver class 'com.mysql.jdbc.Driver'解决办法 在Jmeter中run JDBC Request时,收到 ...

  2. [问题解决]Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

    写了一个脚本读取docker日志,发生报错:Got permission denied while trying to connect to the Docker daemon socket at u ...

  3. Visual Assist之Hashtags功能简介

    Visual Assist是一款非常好的Visual Studio下开发的插件,网上已经有很多关于它的配置以及相关介绍,本文不再赘述.本文将注重介绍它的Hashtags功能. 本文主要内容来自于官网介 ...

  4. shell中的shift左移参数命令

    shift命令用于对参数的向左移动,通常用于在不知道传入参数个数的情况下依次遍历每个参数,然后进行相应的处理(常见与Linux中各种程序的启动脚本).在扫描处理脚本程序的参数时,经常要用到shift命 ...

  5. Office2019 Word 新建文档豆沙绿背景色失效零时解决方案

    如果只针对Word的话,可以尝试在开发者选项卡中新建一个宏,复制下面的内容进行运行: Sub WritingLayout() ActiveDocument.Background.Fill.Visibl ...

  6. Mybatis传多个参数的问题 及MyBatis报错 Parameter '0' not found. Available parameters are [arg1, arg0, param1 问题

    对于使用Mybatis ,传多个参数,我们可以使用对象封装外,还可以直接传递参数 对象的封装,例如查询对象条件basequery对象 <select id="getProductByP ...

  7. Intellij IDEA设置类注释和方法注释

    背景:工欲善其事必先利其器,如果不能把工具用熟练了, 感觉很是别扭. 参考:IntelliJ IDEA设置类注释和方法注释 IntelliJ IDEA 中创建类的时候,可以直接自动给类加注释的设置,以 ...

  8. 有关dfs、bfs解决迷宫问题的个人见解

    可以使用BFS或者DFS方法解决的迷宫问题! 题目如下: kotori在一个n*m迷宫里,迷宫的最外层被岩浆淹没,无法涉足,迷宫内有k个出口.kotori只能上下左右四个方向移动.她想知道有多少出口是 ...

  9. asp.net中的html標籤runat=server時的映射

    asp.net中的html控制項runat=server時的映射 1.標準xhtml標籤:http://blog.csdn.net/TangZhongxin/archive/2009/07/31/43 ...

  10. C++冒泡排序及优化

    冒泡排序 1.经典冒泡排序 经典的冒泡排序为从左边开始依次判断排序,每次最终仅将一个数向后冒泡,而对于其他数的排序没有什么帮助:如果已经所有元素已经是有序的,依然执行循环. 2.优化冒泡排序 优化地方 ...