扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:中国IT实验室 来源:中国IT实验室 2007年8月23日
关键字: jar
所有Java开发者都知道JAR文件只是包含Java类树的压缩(ZIP)文件。但是,不是人人(包括一些经验丰富的开发者)了解这种文件格式的其它优点。在本文中,我将简单介绍JAR文件格式,并说明利用它可以实现的各种可能性。
JAR文件简介
JAR文件以流行的二进制ZIP文件格式为基础,用以把许多文件合并成一个文件。它还包含一个名为META-INF的可选目录,这个目录位于文件根目录下。
有两种方法可以建立JAR文件:应用命令行工具jar,或使用Java中的java.util.jar API编程。如果JAR文件包含在Java类路径中,使JVM可看到它,则JAR文件包含Java类和/或可由类加载器运行、使用及加载的资源。
在许多情况下,JAR文件不仅仅是简单的Java类档案文件和/或资源;它们还可用来为应用程序和扩展建立语句块。META-INF目录(如存在)用于存储数据包和扩展配置数据,包括安全、版本、扩展和服务。
META-INF目录的作用
META-INF目录中的下列文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务:
下面我们来了解一下每种组合。
清单文件
清单文件由“AttributeName: Value”对构成,一个换行符将其划分成两个部分:主要部分和单独部分,这两个被另外一个换行符分开。
下面是清单文件最重要的属性:
Name: javax/servlet/internal/
Sealed: true
说明javax.servlet.internal数据包被密封,且这个数据包中的所有类必须从相同的JAR文件加载。要了解可选数据包的详细内容,请查看扩展机制。
JAR签名文件
任何JAR文件都可以通过java.security API,使用命令行jarsigner工具或目录进行签名。通过文件签名,你可以保证没人能够改变一个文件的内容,以及你正在使用一个知名厂商的JAR文件。如果JAR文件用jarsigner工具签名,那么每个文件,包括META-INF目录中的相关非签名文件,都将被签名。下面是与签名有关的文件:
每个签名器由一个扩展名为.SF的签名文件说明,这个文件的主要内容与清单文件相似。它由一个主要部分构成,其中包含由签名器提供的信息,但并不特别针对某个特定的JAR文件。主要部分的项目x-Digest-Manifest-Main-Attributes(这里的x是一个摘要算法)包含清单主要属性的摘要值。
要使一个文件生效,首先将签名文件的一个摘要值与根据清单文件中对应的项目计算的摘要进行比较;然后,再将清单文件中的一个摘要值与根据“Name:”属性中的实际引用数据计算的摘要比较。“Name:”属性指定一个相对文件路径或RUL。
查看本文来源如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者