# 密封 JAR 文件中的包

> 原文： [https://docs.oracle.com/javase/tutorial/deployment/jar/sealman.html](https://docs.oracle.com/javase/tutorial/deployment/jar/sealman.html)

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

您通过在清单中添加`密封`标头来密封 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

```

* * *

**Warning:** The text file must end with a new line or carriage return. The last line will not be parsed properly if it does not end with a new line or carriage return.

* * *

然后，我们通过输入以下命令创建名为 `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: true

```

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