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)