Eclipse无法识别persistence.xml的内容

时间:2010-09-13 15:32:43

标签: 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>

更新

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

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

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

28 个答案:

答案 0 :(得分:32)

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

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

答案 1 :(得分:30)

有同样的错误问题

  

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

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

答案 2 :(得分:15)

<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 :(得分:14)

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

这肯定是一种痛苦......我可以看到许多不适用的情况。

答案 4 :(得分:13)

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

答案 5 :(得分:8)

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

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

回到OP的原始问题,我有这个完全相同的错误消息(in和off本身告诉你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立即活跃起来,现在一切正常。希望有一天这会帮助某人。

答案 6 :(得分:5)

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

右键单击项目 - &gt; Maven - &gt;更新项目配置...

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

要解决persistence.xml消息,直到修补程序发布,您需要在许多操作上清理项目,因为即使将错误级别设置为“ignore”也不起作用< / em>的。这是一个完全无赖。

答案 7 :(得分:2)

有关此的任何更新?这仍然是一个看似正确的问题吗?如果我创建一个JPA项目,转换为Maven项目,则会出现错误,我无法使用任何推荐的方法将其删除。

修改

好的,所以在操作了一些文件夹之后所以它在实际Maven directory format中,它仍然无效 - 但在src/main/java下创建一个名为META-INF的链接文件夹,链接到{{1}它已经解决了。

创建Maven项目并添加JPA facet也可以,但这只是因为JPA facet将META-INF和persistence.xml文件添加到src/main/resources/META-INF,我认为这不完全正确。

答案 8 :(得分:2)

我正在使用eclipse火星并且有同样的错误。我要做的是1设置项目方面的jpa版本。 right click project -> Properties -> Project Facets在我的案例中将jpa的版本设置为2.1。

注意: 只是配置jp​​a项目构面不会删除错误。您还需要配置平台。

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

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

答案 9 :(得分:2)

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

来修复此问题。

答案 10 :(得分:2)

如果您

,则会出现此问题
  • 将JPA项目转换为Maven项目或
  • 将JPA构面添加到Maven项目中。

解决方案是

  • 选择 Windows&gt;偏好&gt;验证
  • 禁用JPA Validator进行手动验证和构建验证

更改这些设置后,请清理项目。

答案 11 :(得分:1)

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

现在src/main/resources/META-INF/persistence.xml将无法验证。

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

当出现这些恼人的情况时,我经常会发现许多不同的“解决方案”,就像我的一样,其中大多数都不是普遍适用的。

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

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

  • 列出项目 选择菜单项Project&gt;属性&gt;偏好&gt;验证
  • 列出项目 禁用JPA Validator进行手动验证和构建验证。

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

答案 12 :(得分:1)

enter image description here无需更改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&amp ;;上尝试了这种方法。 8..5&amp;蚀。

答案 13 :(得分:1)

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

希望对你有用。

答案 14 :(得分:0)

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

    在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/”:

    4. 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. 我清理构建项目。错误仍然不存在。

      4. 希望这有助于将来。

答案 15 :(得分:0)

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

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

答案 16 :(得分:0)

我通过将META-INF文件夹拖到src / main / resources并将其拖回src / test / resources来解决问题。这就是我解决这个问题所需要的一切。我尝试了所有步骤,但没有一个似乎对我有用,最后这个完成了这个技巧。

答案 17 :(得分:0)

好的......另一个相当强大的解决方案对我有用,因为最顶级的解决方案没有:

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

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

  • 切换到之前的回购版
  • auto- / refresh / -rebuild运行良好

我认识到的是,问题可能是由于 Java Builder没有生成我的war/WEB-INF/classes/文件。以下没有按照这条路径让它构建我的项目:

  • 禁用/重新配置验证器,构建器,构面(直到只有Java Builder / Facet存在)
  • 重命名persistence.xml或以各种方式对其进行编辑

没有帮助它,好像某个内部状态无法改变。

答案 18 :(得分:0)

对我来说,一旦我从Eclipse的“标记”标签中清除了所有消息,它就会起作用

答案 19 :(得分:0)

项目结构中的位置是文件位置?

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

答案 20 :(得分:0)

在我的情况下,Maven插件有一个错误,在资源文件夹的Build路径中将“Exclude”设置为。删除为我解决了这个问题

答案 21 :(得分:0)

我遇到了同样的问题。我的解决方案:右键单击persistence.xml文件 - &gt; JPA-Tools - &gt;同步班级列表。之后就解决了。

答案 22 :(得分:0)

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

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

最诚挚的问候。

答案 23 :(得分:0)

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

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

答案 24 :(得分: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中修复。

答案 25 :(得分:0)

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

嗯,我的建议看起来很愚蠢,但神奇的是它有效。顺便说一下,我的eclipse版本是3.6。

答案 26 :(得分:0)

我在一些情况下遇到了同样的问题,对我来说有用的是复制文件的内容,删除它并创建一个新的persistence.xml文件并将内容粘贴回来。

答案 27 :(得分:0)

很难说很难复制(你的persistence.xml完全有效)但可能会尝试:

  • 清理项目(“Project&gt; Clean”和Maven clean
  • 强制Eclipse再次验证XML文件(右键单击,然后选择验证XML文件)。