文档

Java™ 教程-Java Tutorials 中文版
在 JAR 文件中密封包
Trail: Deployment
Lesson: Packaging Programs in JAR Files
Section: Working with Manifest Files: The Basics

在 JAR 文件中密封包

JAR 文件中的包可以选择性地密封,这意味着该包中定义的所有类必须存档在同一个 JAR 文件中。例如,你可能希望密封包,以确保软件中类之间的版本一致性。

通过在清单中添加 Sealed 头来密封 JAR 文件中的包,该头具有以下一般形式:

Name: myCompany/myPackage/
Sealed: true

myCompany/myPackage/ 是要封装的包的名称。

请注意,包名称必须以“/”结尾。

一个例子

我们想在 JAR 文件 MyJar.jar 中密封两个包 firstPackagesecondPackage

我们首先创建一个名为 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 定义的所有包都是密封的,除非在每个包的基础上被覆盖。

要密封 JAR 文件,请使用值为 true 的 Sealed 清单头。例如,

Sealed: true

指定此归档中的所有包都是密封的,除非显式覆盖清单条目中具有 Sealed 属性的特定包。


Previous page: Setting Package Version Information
Next page: Enhancing Security with Manifest Attributes