当前位置: 首页 > 面试题库 >

在Java中使用MANIFEST.MF文件

周飞
2023-03-14
问题内容

我注意到JAR,WAR和EAR MANIFEST.MF文件在该META-INF文件夹下有一个文件。

MANIFEST.MF文件有什么用?在此文件中可以指定什么?


问题答案:

以下是使用Java开发工具包1.0版创建的JAR文件中清单文件的内容。

Manifest-Version: 1.0

所有条目都是“名称/值”对。标题名称与其值之间用冒号分隔。默认清单显示它符合清单规范的1.0版。清单还可以包含有关归档文​​件中打包的其他文件的信息。清单中确切记录的文件信息将取决于JAR文件的预期用途。默认清单文件不假设它应该记录关于其他文件的信息,因此其单行仅包含有关其自身的数据。专用清单头

根据JAR文件的预期角色,可能需要修改默认清单。如果仅出于存档目的而创建JAR文件,则MANIFEST.MF文件没有任何作用。JAR文件的大多数用途不只是简单的存档和压缩,而且还要求特殊信息包含在清单文件中。下面总结了一些特殊目的JAR文件功能所需的标头的简要说明

捆绑为JAR文件 的应用程序
如果应用程序捆绑在JAR文件中,则需要告知Java虚拟机该应用程序的入口点是什么。入口点是具有公共静态void main(String []
args)方法的任何类。此信息在Main-Class标头中提供,该标头具有以下一般形式:

Main-Class: classname

值classname将替换为应用程序的入口点。

下载扩展:
下载扩展是其他JAR文件的清单文件引用的JAR文件。在典型情况下,小应用程序将捆绑在一个JAR文件中,该JAR文件的清单引用一个JAR文件(或几个JAR文件),该文件将作为该小应用程序的扩展名。扩展可以以相同的方式相互引用。下载扩展名是在applet,应用程序或其他扩展名的清单文件中的Class-
Path标头字段中指定的。Class-Path标头可能看起来像这样,例如:

Class-Path: servlet.jar infobus.jar acme/beans.jar

使用此标头,文件servlet.jar,infobus.jar和acme / beans.jar中的类将用作applet或应用程序的扩展。Class-
Path标头中的URL是相对于applet或应用程序的JAR文件的URL给出的。

程序包密封:
可以选择密封JAR文件中的程序包,这意味着必须将该程序包中定义的所有类归档在同一JAR文件中。可以对软件包进行密封,以确保软件中各类之间的版本一致性或作为安全措施。要密封包装,需要为包装添加一个Name标头,然后添加一个Sealed标头,类似于:

Name: myCompany/myPackage/
Sealed: true

Name标头的值是程序包的相对路径名。请注意,它以“
/”结尾以将其与文件名区分开。名称标头之后的所有标头(中间无空白行)适用于在名称标头中指定的文件或包。在上面的示例中,由于Sealed标头出现在Name:myCompany
/ myPackage标头之后,之间没有空行,因此Sealed标头将解释为(仅)应用于包myCompany / myPackage。

程序包版本控制:
程序包版本控制规范定义了几个清单标头来保存版本信息。可以将一组这样的标题分配给每个程序包。版本标头应直接出现在包的名称标头下方。本示例显示所有版本控制标头:

Name: java/util/
Specification-Title: "Java Utility Classes" 
Specification-Version: "1.2"
Specification-Vendor: "Sun Microsystems, Inc.".
Implementation-Title: "java.util" 
Implementation-Version: "build57"
Implementation-Vendor: "Sun Microsystems, Inc."


 类似资料:
  • 问题内容: 我需要使用bash从“ some.jar”中读取MANIFEST.MF Maven清单文件 问题答案: 将取消解压缩程序的详细输出 将提取到标准输出 例: 或者,您可以使用代替-。 -p将文件提取到管道(stdout)。除了文件数据外,什么都没有发送到stdout,并且文件总是以二进制格式提取,就像存储文件一样(不进行转换)。

  • 问题内容: 我一直在尝试运行一个jar文件-我们称它为test.jar-在Unix系统上使用Sybase jconn3.jar。 我创建了一个具有以下内容的MANIFEST.MF文件: 这给出了ClassNotFoundError。$ SYBASE是指向/ opt / sybase13的系统变量;我还尝试了以下方法: 和 但是,如果我将jconn3.jar文件从$ SYBASE / jConnec

  • 问题内容: 我想阅读我的申请。如何找到其文件名? 问题答案: 如何找到其文件名? 您已经拥有了。也许您想找到绝对文件位置?您可以为此使用。 或者,如果您想直接获得它,请使用。

  • 我用intellij思想做了一个maven项目,但是当我将项目构建到jar时,jar中的manifest.mf不是我的,看起来像我的maven lib的manifest.mf

  • 问题内容: 我需要将Java文件导入Coldfusion 8页面,例如: 在Coldfusion中,我有以下代码: 然后我收到错误 对象实例化异常。找不到课程:您好 在我的Coldfusion服务器中,Java虚拟机路径设置为’C:/ ColdFusion8 / runtime / jre’,所以这是我放置Java文件的地方,这正确吗?我应该在其中放置.java,.class或.jar吗? 文件名

  • 问题内容: 我想在HDFS中创建文件并在其中写入数据。我使用以下代码: 它创建文件,但不写入任何内容。我搜索了很多,但没有找到任何东西。我怎么了 我是否需要任何权限才能在HDFS中写入? 问题答案: 的替代方法,你可以在获取文件系统时传递URI