Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
如果你有一个打包在 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 文件时,MyClass
的 main
方法执行:
java -jar MyJar.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