文档

Java™ 教程-Java Tutorials 中文版
设置应用程序的入口点
Trail: Deployment
Lesson: Packaging Programs in JAR Files
Section: Working with Manifest Files: The Basics

设置应用程序的入口点

如果你有一个打包在 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

警告: 文本文件必须以新行或回车结束。如果不以新行或回车结束,则不会正确解析最后一行。

然后,我们通过输入以下命令创建名为 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 文件时,MyClassmain 方法执行:

java -jar MyJar.jar

使用 JAR 工具设置入口点

'e' 标志(对应 'entrypoint')创建或覆盖清单的 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

Previous page: Modifying a Manifest File
Next page: Adding Classes to the JAR File's Classpath