Eclipse无法识别persistence.xml的内容

Mar*_*ens 48 java eclipse orm jpa m2eclipse

我在eclipse中得到以下错误:

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

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

persistence.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>
Run Code Online (Sandbox Code Playgroud)

更新

看起来像m2eclipse中的一个bug与jpa结合使用.

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

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

YoK*_*YoK 33

有同样的错误问题

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

通过在eclipse中编辑文件来修复,任何编辑都可以.保存错误后就逃之夭夭了.


小智 32

我通过以下方式修复了问题(我正在使用RAD v8.5.1):

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


小智 16

<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">
Run Code Online (Sandbox Code Playgroud)

为我工作!


jad*_*ake 14

我弄清楚这里的问题是什么...... JPA Facet假设META-INF文件夹直接位于源文件夹下.如果您使用的是Maven项目,则可能有类似src/main/resources或src/test/resources的内容.如果你的persistence.xml在这些文件夹下,它会抱怨.如果你创建一个新的源文件夹(称之为"jpa")并在那里创建一个META-INF/persistence.xml,那么它会成功找到它.(我还必须做一个干净/关闭/打开的项目)

这当然是一种痛苦......我可以看到许多情况不会很好.

  • 基于这里的参考:http://www.eclipse.org/forums/index.php?t = msg&goto = 619384&S = eee5753226e70df88f8b0f4e2266e3d1#msg_619384我能够通过将src/main/resources移动到第一个订单来实现这一点/在构建路径中导出.我仍然得到一个错误,即persistence.xml在src/main/resources下无效,但这可以被忽略我相信在Java Persistence首选项选项卡 - >错误/警告 - >项目 - >"无效内容(没有根节点): " (2认同)

wil*_*rdy 13

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


HDa*_*ave 8

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

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

回到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">
Run Code Online (Sandbox Code Playgroud)

对此:

<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">
Run Code Online (Sandbox Code Playgroud)

一旦改变,错误消失了,Dali立即活跃起来,现在一切正常.希望有一天这会帮助某人.


Kaw*_*awu 5

对于某些Indigo(3.7)版本,该错误再次出现.请参见:https://bugs.eclipse.org/bugs/show_bug.cgi?id = 357810

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

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

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