有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaEclipse不识别持久性的内容。xml

我在eclipse中遇到以下错误:

坚持。xml文件没有可识别的内容

我的坚持。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组合中的一个bug

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

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


共 (6) 个答案

  1. # 1 楼答案

    我在Eclipse3.6(Helios)中也遇到了同样的问题。原因是JPA方面被设置为JPA版本1.0,然而我的持久性。xml文件指定了JPA版本2。因此,我将JPA方面更改为2.0版,问题就消失了。(项目-->;属性-->;项目方面-->;“配置”下拉列表-->;将其设置为“最小JPA 2.0配置”

  2. # 2 楼答案

    将此错误转化为警告可能会使问题消失,但它不会修复Eclipse Dali插件的潜在问题。这也意味着非常有用的JPA结构和JPA细节视图将无法工作

    OP提供的链接和这里大多数答案的方法实际上是为了绕过一个不同的问题,Maven想要过滤持久性。xml文件,从而告诉Eclipse忽略它。解决这个问题的一个可行方法是here,它涉及从项目属性的类路径中的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">
    

    一旦改变,错误就消失了,达利立刻活跃起来,现在一切正常。希望有一天这能帮助别人

  3. # 3 楼答案

    <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">
    

    为我工作

  4. # 4 楼答案

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

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

    我知道问题出在哪里了。。。。JPA方面假设META-INF文件夹直接位于源文件夹下。如果您使用的是Maven项目,那么很可能有src/main/resources或src/test/resources之类的内容。如果你坚持下去。xml在这些文件夹下,它会抱怨。如果您创建一个新的源文件夹(称之为“jpa”)并创建META-INF/持久性。xml,然后它会成功地找到它。(我还必须做一个干净/关闭/打开的项目)

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

  6. # 6 楼答案

    也有同样的错误

    The persistence.xml file does not have recognized content

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