设置应用程序的入口点

如果您将应用程序 Binding 在 JAR 文件中,则需要某种方式来指示 JAR 文件中的哪个类是应用程序的入口点。您可以在清单中的Main-ClassHeaders 中提供此信息,该 Headers 的格式如下:

Main-Class: classname

值* classname *是作为应用程序入口点的类的名称。

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

在清单中设置Main-ClassHeaders 后,然后使用以下格式的java命令运行 JAR 文件:

java -jar JAR-name

执行在Main-ClassHeaders 中指定的类的main方法。

An Example

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

我们首先创建一个名为Manifest.txt的文本文件,其内容如下:

Main-Class: MyPackage.MyClass

Warning:

文本文件必须以换行符或回车符结尾。如果最后一行未以新行或回车结尾,则将无法正确解析。

然后,通过 Importing 以下命令,创建一个名为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
首页