首页 / 知识
关于java:META-INF的目的是什么?
2023-04-15 19:19:00

What's the purpose of META-INF?在Java中,您经常会看到一个包含一些元文件的META-INF文件夹。 此文件夹的用途是什么,我可以放在那里? 来自官方的JAR文件规范(链接指向Java 7版本,但至少从v1.3起,文本未发生更改):
一般来说,您自己不应该在META-INF中添加任何内容。相反,您应该依靠任何用于打包JAR的东西。这是我认为Ant真正擅长的领域之一:指定JAR文件清单属性。像这样说很容易:
至少,我认为这很容易... :-) 关键是应将META-INF视为内部Java元目录。不要惹它!您要包含在JAR中的任何文件都应放在其他子目录中或JAR本身的根目录中。 我注意到一些Java库已经开始使用META-INF作为目录,其中包含应该打包的配置文件,以及JAR一起包含在CLASSPATH中。例如,Spring允许您使用以下命令导入类路径上的XML文件:
在此示例中,我直接引用了《 Apache CXF用户指南》。在我从事的一个项目中,我们必须通过Spring进行多级配置,我们遵循了这一约定并将配置文件放入META-INF中。 当我考虑这个决定时,我不知道仅将配置文件包含在特定的Java包中,而不是将其包含在META-INF中到底有什么问题。但这似乎是一个新兴的事实上的标准。要么,要么新兴的反模式:-) META-INF文件夹是MANIFEST.MF文件的宿主。该文件包含有关JAR内容的元数据。例如,有一个名为Main-Class的条目,该条目使用可执行的JAR文件的静态main()指定Java类的名称。 您也可以在其中放置静态资源。 例如:
并通过以下方式将其放入web3.0容器中
>阅读更多 /META-INF/MANIFEST.MF具有特殊含义:
除了此处的信息外,META-INF是一个特殊文件夹,
认为它像另一个根。从 当给定路径以" META-INF"开头时,该方法将搜索嵌套在类路径中所有jar的META-INF文件夹内的资源。 当给定路径不是以" META-INF"开头时,该方法将在类路径中所有jar和目录的所有其他文件夹(META-INF之外)中搜索资源。
如果您知道 Maven中的META-INF
在Maven中,由于标准目录布局而使META-INF文件夹被理解,按照标准约定,该布局将您的项目资源打包在JAR中:放在$ {basedir} / src / main / resources目录中的任何目录或文件都打包到JAR中从JAR的基础开始具有完全相同的结构。文件夹$ {basedir} / src / main / resources / META-INF通常包含.properties文件,而jar中的文件包含生成的MANIFEST.MF,pom.properties,pom.xml等文件。像Spring这样的框架也使用 我最近一直在考虑这个问题。使用META-INF似乎没有任何限制。当然,对于将清单放在其中的必要性有一些限制,但是似乎没有任何禁止在其中放入其他内容的禁止。 为什么会这样呢? cxf案件可能是合法的。在另一个地方,建议使用这种非标准的方法来解决JBoss-ws中的一个讨厌的错误,该错误会阻止针对wsdl模式的服务器端验证。 http://community.jboss.org/message/570377#570377 但实际上似乎没有任何标准,没有任何提示。通常,这些东西的定义非常严格,但是由于某种原因,似乎这里没有标准。奇。似乎META-INF已成为无法通过其他方式轻松处理的所有所需配置的统筹兼顾的地方。 仅在此处添加信息,如果是WAR文件,则META-INF / MANIFEST.MF文件为开发人员提供了一种通过容器启动部署时间检查的功能,以确保容器可以找到您的应用程序的所有类。取决于。这样可以确保在错过JAR的情况下,您不必等到应用程序在运行时崩溃就知道它丢失了。
如果使用的是JPA1,则可能必须在其中放置
在这里查看更多: 所有答案都是正确的。 Meta-inf有许多目的。此外,这是有关使用tomcat容器的示例。
去 说明如下。
您在META-INF文件夹中有MANIFEST.MF文件。您可以定义必须有权访问的可选或外部依赖项。 例:
考虑到您已经部署了应用程序,并且您的容器(在运行时)发现您的应用程序需要库的较新版本,该库不在lib文件夹中,在这种情况下,如果您在
|
最新内容
相关内容
linux文件复制的命令?
linux文件复制的命令?,系统,文件,命令,目录,源文件,基本知识,位置,目标,选项,文件夹,在Linux中,要将指定源文件复制到目标文件,但不覆盖原有文linux链接网络命令行?
linux链接网络命令行?,地址,系统,网络,工作,软件,工具,信息,密码,服务,标准,linux常用命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出linux复制命令文件?
linux复制命令文件?,系统,文件,命令,目录,基本知识,源文件,目标,文件夹,路径,选项,linux怎么复制命令cp命令:用于复制文件或目录。语法如下:`baslinux下文件均分命令?
linux下文件均分命令?,管理,情况,系统,工作,信息,地址,命令,目录,单位,设备,Linux文件系统操作命令1、cat:可以显示文件的内容(经常和more搭配linux查文件数量命令?
linux查文件数量命令?,系统,数据,电脑,命令,文件,信息,代码,对比,软件,第三,linux系统如何查看自己创建了多少文件夹为了实验,我打算总共创建 7linux命令去重文件?
linux命令去重文件?,系统,工作,命令,信息,数据,环境,代码,文件,目录,操作,Linux的命令行中一些文本操作技巧的实例分享1、把文件中所有的 findlinux命令下载链接?
linux命令下载链接?,软件,名称,系统,工具,网络,官网,代理,命令,平台,位置,linux命令怎么下载pdf文件方法如下 wget是linux下一个从网络上自动linux匹配文件名命令?
linux匹配文件名命令?,系统,时间,发行,位置,工具,软件,名称,盘后,电脑,盘中,linux如何查找某个文件名1、用CRT软件连接一个Linux系统 。打开需改文件名linux命令?
改文件名linux命令?,名字,软件,文件,命令,位置,系统,文件名,目录,指令,方面,linux下对文件重命名是什么命令Linux重命名文件是rename。Linux中linux命令文件加锁?
linux命令文件加锁?,数据,密码,系统,设备,代码,地址,名单,信息,数字,统一,请教linux下可否将数据锁在L2cache之中外部缓存(L2 Cache):CPU外部的linux拼接文件命令?
linux拼接文件命令?,文件,数据,命令,代码,时间,信息,系统,情况,管理,标准,Linux文件相关命令top:显示当前进程的系统资源使用情况。kill:终止指linux系统软链接命令?
linux系统软链接命令?,位置,系统,链接,文件,服务,地址,标准,交通,异常,软件,在linux中如何在当前目录中创建一个到var目录中的软连接?1、软链