meta-inf java_jar包中的META-INF 文件夹是干嘛的?

如果平常有注意的话,会发现经常碰到一个叫META-INF的文件夹,比如在tomcat项目中,jar包中解压后.

jar文件本质上是一个基于zip格式的压缩类型,大多数场景下,包含字节码二进制文件,资源文件,然后可以作为一个模块单独提供给第三方使用. 但有时也可以发现与资源文件同级的目录下有一个叫META-INF的文件夹,META-INF有什么作用呢?

找到官网,并尝试翻译了下

如果META-INF文件夹存在的话,是用来存储包和扩展的配置数据,包含安全,版本,扩展和服务

原文是

The META-INF directory, if it exists, is used to store package and extension configuration data, including security, versioning, extension and services.

META-INF下支持四种类型,会被java自动识别并解析,用于配置 应用,扩展,类加载器,服务

MANIFEST.MF

MANIFEST文件用来定义扩展和包相关的数据,

INDEX.LIST

如果使用了jar工具的 "-i"选项,这个文件就会自动生成.文件包含了路径信息和应用或扩展的包定义.它是部分jar索引的实现方式,可用来提高类加载器的加载速度

x.SF

jar包的签名文件,包含清单信息,SF表示signature file, "x" 是文件名

x.DSA The signature block file associated with the signature file with the same base file name. This file stores the digital signature of the corresponding signature file. DSA是一种非对称的数字签名算法.可简单理解为"私钥加密生成数字签名,公钥验证数据及签名", x.DSA是"x.SF"文件关联的同名的"签名块文件",里面存着x.SF的数字签名. SF签名文件和DSA签名块文件可用"jarsigner"命令生成.其实还支持RSA算法,对应的是.RSA的 后缀名

services/

目录文件,存放 服务提供者 的配置文件

平常还有一种情况,通过maven打包的话,在META-INF 下面默认还会包含maven目录,maven目录下会含有pom相关的配置信息

你可能感兴趣的:(meta-inf,java)