Jakarta ee 两个Meta Inf文件夹-正常结构?

Jakarta ee 两个Meta Inf文件夹-正常结构?,jakarta-ee,web-inf,meta-inf,Jakarta Ee,Web Inf,Meta Inf,我刚刚“发现”我们有两个Meta Inf文件夹。。。在eclipse和War文件中 第一个是(在战争中): /META-INF/ 第二个,也是奇怪的一个: /WEB-INF/classes/META-INF/ 第二个文件夹中是persistence.xml和something.taglib.xml 如果我将文件移动到第一个meta inf文件夹中,我会从hibernate获得异常 第二个奇怪的meta inf文件夹的用途是什么? 这是正常的文件夹结构吗?奇怪的一个”位置是正确的;第6.2/8.2

我刚刚“发现”我们有两个Meta Inf文件夹。。。在eclipse和War文件中

第一个是(在战争中):

/META-INF/

第二个,也是奇怪的一个:

/WEB-INF/classes/META-INF/

第二个文件夹中是persistence.xml和something.taglib.xml

如果我将文件移动到第一个meta inf文件夹中,我会从hibernate获得异常

第二个奇怪的meta inf文件夹的用途是什么?

这是正常的文件夹结构吗?

奇怪的一个”位置是正确的;第6.2/8.2节中的JSR-220/JSR-317(Java持久性API 1.0/2.0)说:

META-INF目录包含persistence.xml文件的jar文件或目录称为持久化单元的根。在Java EE中,持久化单元的根可以是以下之一:

  • EJB-JAR文件
  • WAR文件的WEB-INF/classes目录
  • WAR文件的WEB-INF/lib目录中的jar文件
  • EAR根目录中的jar文件*
  • EAR库目录中的jar文件
  • 应用程序客户机jar文件
*)仅对JPA1.0有效


因此,直接在WAR文件中,唯一正确的位置是
WEB-INF/classes/META-INF/

,那么我应该将“错误”文件的内容(它只包含MANIFEST.MF文件)粘贴到“正确”文件中吗?(然后删除放置错误的META-INF)不,根META-INF本身也没有错——它只是不打算保存persistence.xml。META-INF/MANIFEST.MF是jar/war/ear的归档描述符。这个文件是唯一使jar/war/ear格式不同于普通zip文件的文件。因此,有两个META-INF是“正常”的,甚至是必要的?当然是正常的——是否必要,我不确定。它只是一个“jar”工具放置元数据的文件夹,其他工具(如Maven)有时也会使用它。