繁体   English   中英

Eclipse 无法识别persistence.xml 的内容

[英]Eclipse does not recognize content of persistence.xml

我在 Eclipse 中收到以下错误:

persistence.xml 文件没有可识别的内容。

我的persistence.xml 文件在我的应用程序中运行良好,但eclipse 不断给我这个错误。 在移动文件并使用 m2eclipse 更新我的项目配置后,我得到了这个。 我没有更改文件本身。 有谁知道如何解决这个问题?

持久性.xml:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
    <persistence-unit name="localDB" transaction-type="RESOURCE_LOCAL">

        <provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>
        <class>package.Users</class>
        <properties>
            <!-- enable warnings for debugging -->
            <property name="openjpa.Log" value="DefaultLevel=TRACE, Runtime=INFO, Tool=INFO, SQL=TRACE"/>
            <!-- connection properties -->
            <property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost/test"/>
            <property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver"/>
            <property name="openjpa.ConnectionUserName" value="root"/>
            <property name="openjpa.ConnectionPassword" value=""/>

        </properties>
    </persistence-unit>
</persistence>

更新

看起来像 m2eclipse 中与 jpa 结合的错误。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=251323

通过设置将其显示为警告而不是错误的选项暂时解决

我通过以下方式解决了这个问题(我使用的是 RAD v8.5.1):

  1. Windows --> 首选项 --> 验证
  2. 向下滚动到“JPA Validator”并单击“设置”下的省略号。
  3. 单击“添加包含组...”按钮。
  4. 单击出现的新包含组以突出显示它。
  5. 单击“添加规则...”按钮。
  6. 弹出一个对话框菜单。 单击“文件夹或文件名”单选按钮,然后单击“下一步”。
  7. 单击“浏览文件夹...”并导航到工作区中项目(我的项目是多模块应用程序中的 .war)中的 src 目录(在我的情况下,它是“src/main/resources”)。
  8. 单击“完成”。
  9. 单击“确定”。 这将提示一个完整的构建。
  10. 错误将消失。

有同样的错误问题

persistence.xml 文件没有可识别的内容

通过在eclipse中编辑文件来修复,任何编辑都可以。 保存后错误就消失了。

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
version="2.0">

为我工作!

我想出了这里的问题...... JPA Facet 假设 META-INF 文件夹直接位于源文件夹下。 如果您正在使用 Maven 项目,您可能有类似 src/main/resources 或 src/test/resources 的内容。 如果您的persistence.xml 在这些文件夹下,它会报错。 如果您创建一个新的源文件夹(称为“jpa”)并在其中创建一个 META-INF/persistence.xml,那么它将成功找到它。 (我还必须做一个清理/关闭/打开项目)

这当然是一种痛苦......而且我可以看到很多情况这不会很好地工作。

我在 Eclipse 3.6 (Helios) 中遇到了同样的问题。 原因是 JPA Facet 设置为 JPA Version 1.0,但是我的 persistence.xml 文件指定了 JPA Version 2。所以我将 JPA Facet 更改为 version 2.0,问题就消失了。 (项目 --> 属性 --> 项目构面 --> “配置”下拉菜单 --> 将其设置为“最小 JPA 2.0 配置”

将此错误转换为警告可能会使问题消失,但它不会解决 Eclipse Dali 插件的潜在问题。 这也意味着非常有用的 JPA Structure 和 JPA Details 视图将不起作用。

OP 提供的链接和此处大多数答案的方法实际上是为了解决一个不同的问题,其中 Maven 想要过滤 persistence.xml 文件,从而告诉 Eclipse 忽略它。 此处解释了该问题的可行解决方法,包括从项目属性的类路径中的 src/main/resources 条目中删除 exclused: '**'。

回到 OP 的原始问题,我有这个完全相同的错误消息(它本身告诉您已经找到了 persistence.xml 文件)。 对我来说,解决方案是从这里更改持久性 XML 元素:

<persistence xmlns="http://java.sun.com/xml/ns/persistence" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
    version="1.0">

对此:

<persistence xmlns="http://java.sun.com/xml/ns/persistence"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
    http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"
    version="2.0">

一旦更改,错误就会消失,Dali 立即活跃起来,现在一切正常。 希望有一天这对某人有所帮助。

该错误在某些 Indigo (3.7) 版本中再次出现。 请参阅此处: https : //bugs.eclipse.org/bugs/show_bug.cgi?id=357810

右键项目 -> Maven -> 更新项目配置...

可能会破坏某些构建路径条目和/或部署程序集,非常烦人,因此仅在更改 Maven deps 时才这样做。

要在补丁发布之前解决persistence.xml 消息,您需要在许多操作上清理项目,因为即使将错误级别设置为“忽略”也不起作用 这是一个完全的无赖。

有任何更新吗? 这似乎仍然是一个问题吧? 如果我创建一个 JPA 项目,转换为 Maven 项目,就会出现错误,我无法使用任何推荐的方法摆脱它。

编辑

好的,在移动一些文件夹之后,它以实际的Maven 目录格式,它仍然没有工作 - 但在src/main/java下创建一个名为 META-INF 的链接文件夹,链接到src/main/resources/META-INF它被解决了。

创建一个 Maven 项目并添加 JPA 方面也有效,但只是因为 JPA 方面将 META-INF 和 persistence.xml 文件添加到src/main/java ,我认为这不完全正确。

在此处输入图片说明无需更改 xml 文件中的内容,也无需在 src 文件夹中添加 xml。 将您的 persistance.xml 文件放在 META-INF 文件夹中,然后将 META-INF src/main/resource 文件夹。 尝试以下方法:右键单击project> Java Build path > Source Tab > ProjectName/src/main/resource > set Included(All) and Excluded(None). 然后清理并构建您的项目。 它会为你工作。 在 RAD 7 & 8..5 & Eclipse 上尝试了这种方法。

如果您

  • 将 JPA 项目转换为 Maven 项目或
  • 将 JPA facet 添加到 Maven 项目。

解决办法是

  • 选择Windows > 首选项 > 验证
  • 禁用手动验证和构建验证的 JPA 验证器

更改这些设置后,然后清理您的项目。

我正在使用 eclipse mars 并且有同样的错误。 我必须做的是 1 为项目方面设置 jpa 的版本。 在我的情况下, right click project -> Properties -> Project Facets将 jpa 的版本设置为 2.1。

注意:仅配置 jpa 项目 facet 不会消除错误。 您还需要配置平台。

接下来我必须配置 JPA 平台。 right click project -> Properties -> JPA 在我的情况下,将平台更改为 Hibernate 2.1。

当您使用 Persistence XML 编辑器打开 persistence.xml 并且底部只有一个Source选项卡而没有 General、Connection、Options、Properties 等其他选项卡时,此问题也会表现出来。

我通过转到 Project - Properties - Java Persistence: 然后将“Canonical metamodel (JPA 2.0)”部分中的“Source Folder”设置为:“src/generated/resources”来解决这个问题

我让src/main/java/META-INF/persistence.xml在带有嵌入式 Tomcat 的 Eclipse 中正常工作。 因为它没有被复制到 Maven 构建的 WAR 中,所以我将它移动到src/main/resources/META-INF

现在src/main/resources/META-INF/persistence.xml不会验证。

如果重命名为 xyz_persistence.xml,则验证正常。
如果重命名为persistence.xml,则验证失败。

当这些烦人的情况出现时,我经常会找到许多不同的“解决方案”,其中大部分都不是普遍适用的。

所以,这是我的“解决方案”,我认为这是一个绕过错误的黑客:

要删除错误“persistence.xml 文件没有可识别的内容”错误,请禁用 JPA 验证器:

  • 列表项 选择菜单项 Project > Properties > Preferences > Validation
  • 列表项禁用手动验证和构建验证的 JPA 验证器。

您可能需要清理和重建。 您的里程可能会有所不同。

我通过在 Eclipse 中创建一个“符号链接”来解决这个问题。 因此,我的 persistence.xml 文件保留在 src/main/resources/META-INF 中,正如 Maven 所期望的和 m2eclipse 需要的那样。 但是,为了修复 Dali 问题,请在 src/main/java/META-INF 中创建一个新文件,该文件链接到 src/main/resources/META-INF 中的文件。 您可以通过在创建新文件时点击“高级”选项并使用“浏览...”按钮定位文件来完成此操作。 请注意,这不会在 META-INF 文件夹中创建物理文件,但是,您需要文件夹本身才能创建链接。

希望这对你有用。

我有同样的错误,但以不同的方式解决了它。

问题是 META-INF 必须被视为一个源文件夹,因为它在 /ejbModule 下(我的是一个 EJB 项目),我认为它在构建路径上。 事实并非如此。 实际上它在构建路径上的“排除”列表中。 所以,我所做的只是在 Project Explorer 视图中右键单击 META-INF 文件夹,然后在 Build Path 菜单上选择 INCLUDE。 然后我让 Eclipse 清理项目,一切又恢复正常。

最好的问候。

我遇到了同样的问题。 我的解决方案:在persistence.xml文件上右键->JPA-Tools->同步类列表。 之后就解决了。

就我而言,它是 Maven 插件,它有一个错误,将“排除”设置为. 在资源文件夹的构建路径中。 删除. 为我解决了这个问题

我通过将 META-INF 文件夹拖到 src/main/resources 并将其拖回 src/test/resources 来修复它。 这就是我解决问题所需的全部内容。 我尝试了上面给出的所有步骤,但似乎没有一个对我有用,最后这个成功了。

刚刚通过这样做解决了这个问题:

  1. 在 schemaLocation 中,我删除了“h ttp://java.sun.com/xml/ns/persistence/”,使其:

xsi:schemaLocation="http://java.sun.com/xml/ns/persistence persistence_2_0.xsd"

  1. 我在顶部添加了<?xml version="1.0" encoding="UTF-8"?>

  2. 我清理构建项目。 错误消失了。

  3. 我再次添加了“h ttp://java.sun.com/xml/ns/persistence/”:

xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd "

  1. 我清理构建项目。 错误不存在。

  2. 我删除了顶部的<?xml version="1.0" encoding="UTF-8"?>

  3. 我清理构建项目。 错误仍然不存在。

希望这有助于将来的某人。

好的……另一个对我有用的相当强大的解决方案,因为最重要的解决方案没有:

  • 因为我使用了 Mercurial 并且可以轻松返回,而当前版本和最新版本没有任何显着差异,因此它的工作方式如下:

  • 提交了一些与此问题无关的重要更改

  • 切换到以前的回购版本
  • 自动/刷新/重建运行正常

我认识到,问题可能是由于Java Builder 没有生成我的war/WEB-INF/classes/ files 以下内容无法按照这条线索构建我的项目:

  • 禁用/重新配置验证器、构建器、构面(直到只有 Java 构建器/构面在那里)
  • 重命名persistence.xml或以各种方式编辑它

这对它没有帮助,好像某些内部状态无法更改。

您的项目结构中的文件位于何处?

对于 ref,我在 maven-module-name/src/main/resources/META-INF/ 中有我的

很难说,因为很难重现(你的persistence.xml是完全有效的),但也许尝试:

  • 清理项目(“项目 > 清理”和 Maven clean
  • 强制 Eclipse 再次验证 XML 文件(右键单击并选择验证 XML 文件)。

我有几次遇到同样的问题,对我有用的是复制文件的内容,删除它并创建一个新的 persistence.xml 文件并将内容粘贴回。

我遇到了同样的问题。 转到项目属性 -> Java 构建路径 -> 源,删除 src/main/resources 源的 * / .java 排除属性。 然后添加 META-INF/persistence.xml。 然后重启eclipse。 您应该在项目资源管理器中的 JPA 内容下使用 persistence.xml。 之后还原您的更改。

好吧,我的建议似乎很愚蠢,但它神奇地起作用了。 顺便说一下,我的 Eclipse 版本是 3.6。

对我来说,一旦我清除了 eclipse 中 Markers 选项卡中的所有消息,它就起作用了

将您的JPA 版本添加到Project Facet以消除此错误。

就我而言,我使用了 JPA 2.2,但在 Project Facets 中指定了 JPA 1.0。 解决这个问题后,错误消失了。

该问题已在 Indigo(2011 年 6 月发布)中修复,请参阅https://bugs.eclipse.org/bugs/show_bug.cgi?id=251323#c24https://issues.sonatype.org/browse/MECLIPSEWTP -11

“persistence.xml 文件没有可识别的内容。” 在项目导入或工作区启动时,错误可能仍会随机出现,但可以通过项目清理或 Maven 项目更新来修复。 这将在 SR2 的 Dali 中修复。

我有同样的问题,为了让它消失,我必须确保这一行是文件顶部的第一行(没有前导空行或空格):

<?xml version="1.0" encoding="UTF-8"?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM