windows下修改Jar包内容的两种方式
- 背景
- 第一种:解压工具
- 第二种:Jar命令
- 附Jar命令用法
- 基本用法
- 常见选项
- 示例1:创建一个简单的 JAR 文件
- 示例2:创建包含清单文件的 JAR 文件
- 示例3:列出 JAR 文件的内容
- 示例4:提取 JAR 文件的内容
- 示例5:更新 JAR 文件
- 示例6:创建可执行的 JAR 文件
背景
最近被公司的成分分析搞怕了,每个版本不关多少改动,都要扫描,动不动就通报,关键是 Jar 包里有些依赖的三方组件已经升级到最新版本,仍然能扫出问题,总不能自己重写组件吧,不能改就暂时删掉得了。下面分享下两种修改 Jar 内文件的两种方式,顺便记录下 Jar 命令的常用方式。
第一种:解压工具
JAR包:主要用于打包 Java 应用程序和库。JAR 包包含了 Java 类文件、资源文件(如图像、配置文件等)和一个特殊的 META-INF
目录,其中包含了元数据(如清单文件 MANIFEST.MF
)。
JAR 包实际上是采用 ZIP 格式压缩的文件。因此,可以使用 ZIP 解压工具来打开和解压 JAR 文件。
Windows平台上可以使用压缩工具,直接在压缩包内剔除不要的组件。
依赖的组件在
\BOOT-INF\lib
目录下,可直接删除。
第二种:Jar命令
如果配置了 jdk 开发环境,那么就能在环境变量里找到jar命令。
1、解压jar包并手动替换
使用以下jar命令进行解析:
jar -xvf xxx.jar
2、编辑后再压缩
解压之后可以删除或修改相关文件,之后再用以下命令进行打成jar包。
jar -cfM0 test.jar BOOT-INF/ META-INF/ org/
好了,以上就是要分享的两种方式,希望能帮你解燃眉之急,关键还是要认真处理成分析中的组件依赖,尽量先升级来适配,或者通过提供灰名单的方式来沟通解决问题。
附Jar命令用法
jar
命令是 JDK(Java Development Kit)中用于创建、管理和提取 JAR(Java ARchive)文件的工具。JAR 文件是一种用于打包多个文件(通常是 Java 类文件和资源文件)成一个压缩归档文件的格式。以下是 jar
命令的使用方式和常见选项的详细介绍:
基本用法
jar
命令的基本语法格式如下:
jar [options] [jar-file] [manifest-file] [entry-point] [-C dir] files
常见选项
c
:创建新的 JAR 文件。f
:指定 JAR 文件的名称。v
:生成详细输出,显示正在处理的文件。m
:包含指定的清单文件(manifest
)。e
:指定 JAR 包的入口点(即包含main
方法的类),用于创建可执行 JAR 文件。t
:列出 JAR 文件的内容。x
:从 JAR 文件中提取文件。u
:更新现有的 JAR 文件。C
:改变目录,将指定目录下的文件添加到 JAR 文件中。0
: 仅存储; 不使用任何 ZIP 压缩。
示例1:创建一个简单的 JAR 文件
假设你有一个目录结构如下:
myapp/
├── com/
│ └── example/
│ └── Main.class
└── resources/
└── config.properties
你可以使用以下命令创建一个名为 myapp.jar
的 JAR 文件:
jar cf myapp.jar -C myapp/ .
这会创建一个包含 myapp/
目录下所有文件的 JAR 文件。
示例2:创建包含清单文件的 JAR 文件
你可以创建一个自定义的清单文件 MANIFEST.MF
:
Manifest-Version: 1.0
Main-Class: com.example.Main
然后使用以下命令创建包含此清单文件的 JAR 文件:
jar cmf MANIFEST.MF myapp.jar -C myapp/ .
示例3:列出 JAR 文件的内容
使用 t
选项可以列出 JAR 文件的内容:
jar tf myapp.jar
示例4:提取 JAR 文件的内容
使用 x
选项可以提取 JAR 文件的内容:
jar xf myapp.jar
你可以选择性地提取特定的文件或目录:
jar xf myapp.jar com/example/Main.class
示例5:更新 JAR 文件
使用 u
选项可以更新现有的 JAR 文件,添加或更新其中的文件:
jar uf myapp.jar -C myapp/ .
示例6:创建可执行的 JAR 文件
假设你的清单文件(MANIFEST.MF
)包含以下内容:
Manifest-Version: 1.0
Main-Class: com.example.Main
你可以使用以下命令创建一个可执行的 JAR 文件:
jar cfe myapp.jar com.example.Main -C myapp/ .
这样,运行以下命令即可启动应用程序:
java -jar myapp.jar
通过掌握这些基本命令和选项,可以有效地创建、管理和使用 JAR 文件来打包和分发 Java 应用程序和库。