Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
JAR 文件中的包可以选择性地密封,这意味着该包中定义的所有类必须存档在同一个 JAR 文件中。例如,你可能希望密封包,以确保软件中类之间的版本一致性。
通过在清单中添加 Sealed 头来密封 JAR 文件中的包,该头具有以下一般形式:
Name: myCompany/myPackage/ Sealed: true
值 myCompany/myPackage/ 是要封装的包的名称。
请注意,包名称必须以“/”结尾。
我们想在 JAR 文件 MyJar.jar 中密封两个包 firstPackage 和 secondPackage。
我们首先创建一个名为 Manifest.txt 的文本文件,其中包含以下内容:
Name: myCompany/firstPackage/ Sealed: true Name: myCompany/secondPackage/ Sealed: true
然后,我们通过输入以下命令创建名为 MyJar.jar 的 JAR 文件:
jar cfm MyJar.jar Manifest.txt MyPackage/*.class
这将创建一个带有以下内容的清单的 JAR 文件:
Manifest-Version: 1.0 Created-By: 1.7.0_06 (Oracle Corporation) Name: myCompany/firstPackage/ Sealed: true Name: myCompany/secondPackage/ Sealed: true
如果要保证包中的所有类都来自相同的代码源,请使用 JAR 密封。密封的 JAR 指定由 JAR 定义的所有包都是密封的,除非在每个包的基础上被覆盖。
要密封 JAR 文件,请使用值为 true 的 Sealed 清单头。例如,
Sealed: true
指定此归档中的所有包都是密封的,除非显式覆盖清单条目中具有 Sealed 属性的特定包。