1. 概述
每个可执行的Java类都必须包含一个main方法。简而言之,此方法是应用程序的起点。
要从自执行JAR文件运行我们的main方法,我们必须创建一个适当的manifest文件并将其与我们的代码一起打包。这个manifest文件必须有一个main清单属性,它定义了包含我们的main方法的类的路径。
在本教程中,我们将展示如何将一个简单的Java类打包为一个自执行的JAR,并演示main清单属性对于成功执行的重要性。
2. 执行没有Main Manifest属性的JAR
为了更加实用,我们将展示一个没有适当清单属性的失败执行示例。
让我们编写一个带有main方法的简单Java类:
public class AppExample {
public static void main(String[] args) {
System.out.println("AppExample executed!");
}
}
要将我们的示例类打包到JAR存档中,我们必须转到操作系统的shell并编译它:
javac -d . AppExample.java
然后我们可以把它打包成一个JAR:
jar cvf example.jar cn/tuyucheng/taketoday/manifest/AppExample.class
我们的example.jar将包含一个默认清单文件。现在我们可以尝试执行JAR:
java -jar example.jar
执行将失败并出现错误:
nomainmanifest attribute, in example.jar
3. 使用Main Manifest属性执行JAR
正如我们所看到的,JVM无法找到我们的main清单属性。因此,它找不到包含main方法的主类。
让我们将适当的清单属性与我们的代码一起包含到JAR中,我们需要创建一个包含单行的MANIFEST.MF文件:
Main-Class: manifest.cn.tuyucheng.taketoday.AppExample
我们的manifest现在包含我们编译的AppExample.class的类路径。因为我们已经编译了我们的示例类,所以没有必要再做一次。
我们将把它与我们的manifest文件打包在一起:
jar cvmf MANIFEST.MF example.jar cn/tuyucheng/taketoday/manifest/AppExample.class
这次JAR按预期执行并输出:
AppExample executed!
4. 总结
在这篇简短的文章中,我们展示了如何将一个简单的Java类打包为一个自执行的JAR,并且我们在两个简单的示例中展示了main清单属性的重要性。
与往常一样,本教程的完整源代码可在GitHub上获得。
Show Disqus Comments
Post Directory
扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章