背景

最近被公司的成分分析搞怕了,每个版本不关多少改动,都要扫描,动不动就通报,关键是 Jar 包里有些依赖的三方组件已经升级到最新版本,仍然能扫出问题,总不能自己重写组件吧,不能改就暂时删掉得了。下面分享下两种修改 Jar 内文件的两种方式,顺便记录下 Jar 命令的常用方式。

第一种:解压工具

JAR包:主要用于打包 Java 应用程序和库。JAR 包包含了 Java 类文件、资源文件(如图像、配置文件等)和一个特殊的 META-INF 目录,其中包含了元数据(如清单文件 MANIFEST.MF)。

JAR 包实际上是采用 ZIP 格式压缩的文件。因此,可以使用 ZIP 解压工具来打开和解压 JAR 文件。

Windows平台上可以使用压缩工具,直接在压缩包内剔除不要的组件。

依赖的组件在\BOOT-INF\lib目录下,可直接删除。

解压工具直接打开

删除选中的组件

第二种:Jar命令

如果配置了 jdk 开发环境,那么就能在环境变量里找到jar命令。

image-20240626150213231

1、解压jar包并手动替换

使用以下jar命令进行解析:

jar -xvf xxx.jar

image-20240626150435627

2、编辑后再压缩

解压之后可以删除或修改相关文件,之后再用以下命令进行打成jar包。

jar -cfM0 test.jar BOOT-INF/ META-INF/ org/

image-20240626150654550

好了,以上就是要分享的两种方式,希望能帮你解燃眉之急,关键还是要认真处理成分析中的组件依赖,尽量先升级来适配,或者通过提供灰名单的方式来沟通解决问题。

附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 应用程序和库。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐