我刚刚“发现”我们有两个 Meta-Inf 文件夹......在 eclipse 和 War 文件中。
第一个是(在战争中):
/META-INF/
第二个,也是奇怪的一个:
/WEB-INF/类/META-INF/
在第二个文件夹中是一个persistance.xml 和一个something.taglib.xml ......
如果我将文件移动到第一个 meta-inf 文件夹中,我会从休眠中得到异常..
第二个奇怪的 meta-inf 文件夹的目的是什么?
这是正常的文件夹结构吗?
我刚刚“发现”我们有两个 Meta-Inf 文件夹......在 eclipse 和 War 文件中。
第一个是(在战争中):
/META-INF/
第二个,也是奇怪的一个:
/WEB-INF/类/META-INF/
在第二个文件夹中是一个persistance.xml 和一个something.taglib.xml ......
如果我将文件移动到第一个 meta-inf 文件夹中,我会从休眠中得到异常..
第二个奇怪的 meta-inf 文件夹的目的是什么?
这是正常的文件夹结构吗?
“怪异”的位置是正确的;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/.