如何在Java中使用JAR Manifest文件
[摘录](如何在Java中使用JAR Manifest文件(附实例) - 掘金 (juejin.cn))
在Java编程语言中,清单文件是一个文本文件,它包含与程序员的JAR归档文件中包含的文件有关的元数据。这种元数据的范围可以从与包信息有关的信息到安全属性的属性。
一个程序在其JAR归档中只能有一个清单文件,因此,对于开发人员来说,了解如何与这些清单文件打交道以及如何正确使用它们非常重要。在这个Java教程中,你将学习如何在你的Java应用程序中使用JAR清单文件。
Java中的默认清单文件
当您创建一个JAR文件时,也会随之创建一个默认的清单文件。该文件最初包含与清单版本和 JDK 版本有关的两个字段。例如,以下是一个典型的清单文件的内容:
Manifest-Version: 1.0
Created-By: 11.0.3 (Oracle Corporation)
默认清单总是位于JAR文件的路径META-INF/MANIFEST.MF中。
如何在 Java 中修改清单文件
开发人员可以手动修改清单文件,也可以在创建JAR文件时使用m选项来修改。手动修改文件意味着直接向其中添加条目。
正如您在上一节所注意到的,JAR文件包含头:值对。你也可以为你想要的头:值对添加一个条目。然而,需要注意的是,在最后一个条目之后,程序员应该添加一个新行字符。否则,最后一个条目将不能被正确解析。
另外,程序员也可以使用m选项来修改JAR清单文件,如下所示:
jar cfm ArchiveName.jar add-to-manifest.txt files-to-include
m选项指定您打算将某个文本文件(如add-to-manifest.txt)中的某些信息合并到您现有的JAR清单文件中。
开发人员必须注意,f和m选项的出现顺序应与各自的参数相匹配。您还需要确保您的文本文件以一个新行字符结束。
接下来的两节描述了一些特殊的用例,你可以用你的JAR文件来应用。
JAR文件和Java应用程序打包
JAR文件有时被用来包装Java应用程序。当你决定在JAR文件中运行一个应用程序时,程序员需要指定要使用的入口点。入口点是指你的main()*方法所定义的类。要定义你的应用程序的入口点,请使用*Main-Class头。
例如,如果您的入口点是PackageName包中的ClassName,那么您应该在清单文件中包含以下条目:
Main-Class: PackageName.ClassName
要在你的JAR归档中运行应用程序,你现在可以使用下面的命令:
java -jar ArchiveName.jar
你也可以使用JAR工具的e选项为你的应用程序设置入口点。需要注意的是,该选项会覆盖您清单文件中的Main-Class头。
下面的Java代码示例创建了一个名为ArchiveName.jar的归档文件,入口点设置为MyClass.class:
jar cfe ArchiveName.jar * MyClass.class
在更新您的JAR归档文件时,您也可以使用e选项。如果你的入口点在一个目录中(比如说MyDirectory),那么你在命令行中指定它时可以使用正斜线'/':
jar cfe ArchiveName.jar * MyDirectory/MyClass.class
如何将类添加到JAR Classpath中
在打包你的应用程序时,程序员可能会把不同的类放在几个jar文件中。这里有一个很好的例子,如果一个打包在JAR归档文件中的小程序与打包在不同JAR归档文件中的依赖关系。
为了确保另一个JAR归档文件中的类在你运行时被加载到你的JAR文件中,你需要在你的调用JAR文件中添加它们的classpath。
只要在清单文件的Class-Path头中设置路径就可以了。例如,如果要加载的JAR文件与您的调用JAR文件在同一目录下,您可以使用下面的方法:
Class-Path: Other-JAR-File.jar
关于 Java 清单文件的最终想法
清单文件允许开发人员描述与JAR存档中的文件有关的信息。如前所述,一定要记得用一个新行字符来结束你的JAR文件的修改文本文件。
标签:文件,MF,Java,Jar,JAR,应用程序,manifest,jar,清单 From: https://www.cnblogs.com/zhenhunfan2/p/17434742.html