首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >META-INF的用途是什么?

META-INF的用途是什么?
EN

Stack Overflow用户
提问于 2008-09-16 15:55:21
回答 13查看 286.2K关注 0票数 325

在Java中,您经常会看到包含一些元文件的META-INF文件夹。这个文件夹的用途是什么?我可以在那里放些什么?

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2008-09-16 08:05:30

一般来说,您不应该自己将任何内容放入META-INF中。相反,您应该依赖于您用来打包JAR的任何东西。这是我认为Ant真正擅长的领域之一:指定JAR文件清单属性。很容易说出这样的话:

代码语言:javascript
复制
<jar ...>
    <manifest>
        <attribute name="Main-Class" value="MyApplication"/>
    </manifest>
</jar>

至少,我认为这很容易。:-)

关键是META-INF应该被视为内部Java元目录。别搞砸了!您希望包含在JAR中的任何文件都应该放在某个其他的子目录中,或者放在JAR本身的根目录中。

票数 72
EN

Stack Overflow用户

发布于 2008-09-16 15:57:15

来自the official JAR File Specification (链接到Java7版本,但文本至少从1.3版开始没有更改):

META-INF目录

Java 2平台可以识别和解释META-INF目录中的以下文件/目录,以配置应用程序、扩展、类加载器和服务:

  • MANIFEST.MF

用于定义扩展和包相关数据的清单文件。

  • INDEX.LIST

该文件由jar工具的新"-i“选项生成,该选项包含应用程序或扩展中定义的包的位置信息。它是JarIndex实现的一部分,由类加载器用来加快其类加载过程。

  • x.SF

JAR文件的签名文件。'x‘代表基本文件名。

  • x.DSA

与具有相同基本文件名的签名文件关联的签名块文件。此文件存储相应签名文件的数字签名。

  • services/

此目录存储所有服务提供商配置文件。

票数 174
EN

Stack Overflow用户

发布于 2008-11-24 21:38:41

我注意到一些Java库已经开始使用META-INF作为包含配置文件的目录,这些配置文件应该与JAR一起打包并包含在CLASSPATH中。例如,Spring允许您使用以下命令导入类路径中的XML文件:

代码语言:javascript
复制
<import resource="classpath:/META-INF/cxf/cxf.xml" />
<import resource="classpath:/META-INF/cxf/cxf-extensions-*.xml" />

在本例中,我直接引用了Apache CXF User Guide中的内容。在我工作的一个项目中,我们必须允许通过Spring进行多级配置,我们遵循了这个约定,并将配置文件放在META-INF中。

当我思考这一决定时,我不知道简单地将配置文件包含在特定的Java包中而不是META-INF中到底有什么问题。但它似乎是一个新兴的事实上的标准;要么,要么是一个新兴的反模式:-)

票数 28
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70216

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档