# 设置应用程序的入口点

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

如果您有一个捆绑在 JAR 文件中的应用程序，则需要某种方法来指示 JAR 文件中的哪个类是应用程序的入口点。您使用清单中的`Main-Class`标头提供此信息，该标头具有以下一般形式：

```
Main-Class: classname

```

值 _`classname`_ 是应用程序入口点的类的名称。

回想一下，入口点是一个具有签名`public static void main(String[] args)`的方法的类。

在清单中设置`Main-Class`标头后，使用以下形式的`java`命令运行 JAR 文件：

```
java -jar JAR-name

```

执行`Main-Class`标头中指定的类的`main`方法。

## 一个例子

我们想在运行 JAR 文件时在包`MyPackage`中的类`MyClass`中执行`main`方法。

我们首先创建一个名为`Manifest.txt`的文本文件，其中包含以下内容：

```
Main-Class: MyPackage.MyClass

```

* * *

**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)
Main-Class: MyPackage.MyClass

```

使用以下命令运行 JAR 文件时，`MyClass`的`main`方法执行：

```
java -jar MyJar.jar

```

## 使用 JAR 工具设置入口点

'e'标志（用于'入口点'）创建或覆盖清单的`Main-Class`属性。它可以在创建或更新 JAR 文件时使用。使用它指定应用程序入口点，而无需编辑或创建清单文件。
例如，此命令创建`app.jar`，其中清单中的`Main-Class`属性值设置为`MyApp`：

```
jar cfe app.jar MyApp MyApp.class

```

您可以通过运行以下命令直接调用此应用程序：

```
java -jar app.jar

```

如果入口点类名称在包中，则可以使用“。” （点）字符作为分隔符。例如，如果`Main.class`位于名为`foo`的包中，则可以通过以下方式指定入口点：

```
jar cfe Main.jar foo.Main foo/Main.class

```