此Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并且可能使用不再可用的技术。
有关Java SE 9和后续版本中更新的语言功能的摘要,请参阅Java语言更改。
有关所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息,请参阅JDK发布说明。
如果您有一个打包在JAR文件中的应用程序,您需要一种方法来指示JAR文件中的哪个类是您的应用程序的入口点。您可以在清单文件中使用Main-Class
头部来提供这些信息,其一般形式如下:
Main-Class: 类名
其中类名
是您的应用程序的入口点类的名称。
请记住,入口点是一个具有public static void main(String[] args)
签名的方法的类。
在您在清单文件中设置了Main-Class
头部之后,您可以使用以下形式的java
命令来运行JAR文件:
java -jar JAR文件名
将会执行清单文件中指定的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
的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