【问题标题】:Two Meta-Inf folders - normal structure?两个 Meta-Inf 文件夹 - 正常结构?
【发布时间】:2012-11-05 19:04:00
【问题描述】:

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

第一个是(在战争中):

/META-INF/

第二个,奇怪的一个:

/WEB-INF/classes/META-INF/

在第二个文件夹中是一个persistance.xml 和一个something.taglib.xml...

如果我将文件移动到第一个 meta-inf 文件夹中,我会从休眠中得到异常..

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

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

【问题讨论】:

    标签: jakarta-ee web-inf meta-inf


    【解决方案1】:

    “奇怪的”位置是正确的; JSR-220/JSR-317 (Java Persistence API 1.0/2.0) 在第 6.2/8.2 节中说:

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

    • 一个 EJB-JAR 文件
    • WAR 文件的 WEB-INF/classes 目录
    • WAR文件的WEB-INF/lib目录下的jar文件
    • EAR 根目录中的 jar 文件*
    • EAR 库目录中的 jar 文件
    • 应用程序客户端 jar 文件。

    *) 仅对 JPA 1.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)有时也会使用它。
    猜你喜欢
    • 1970-01-01
    • 2020-11-03
    • 2010-11-20
    • 2015-01-26
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 1970-01-01
    相关资源
    最近更新 更多