Eclipse不能识别persistence.xml的内容

Im在eclipse中得到以下错误:

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

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

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结合的bug。

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

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

我用下面的方法解决了这个问题(我正在使用RAD v8.5.1):

  1. Windows – >首选项 – >validation
  2. 向下滚动到“JPA Validator”,点击Settings下的Ellipses。
  3. 点击“添加包含组…”button。
  4. 点击看起来突出显示的新包含组。
  5. 点击“添加规则…”button。
  6. popup一个对话框菜单。 点击“文件夹或文件名”单选button,然后点击“下一步”。
  7. 点击“浏览文件夹…”并导航到您的项目(在我的项目是在多模块应用程序中的.war)在您的工作区中的src目录(在我的情况下,它是“src / main / resources”)。
  8. 点击“完成”。
  9. 点击“确定”。 这将提示完整的构build。
  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位于这些文件夹下面,它会报错。 如果你创build一个新的源文件夹(称之为“jpa”),并在那里创build一个META-INF / persistence.xml,那么它将成功find它。 (我也必须做一个干净的/closures/打开的项目)

这当然是一个痛苦….我可以看到很多情况下,这不会很好。

我在Eclipse 3.6(Helios)中遇到了同样的问题。 原因是JPA Facet被设置为JPA版本1.0,但是我的persistence.xml文件指定了JPA版本2.所以我将JPA Facet更改为版本2.0,问题就消失了。 (Project – > Properties – > Project Facets – >“Configuration”下拉菜单 – >将其设置为“Minimum JPA 2.0 configuration”

将这个错误转化为警告可能会使问题消失,但是它不能解决Eclipse Dali插件的底层问题。 这也意味着非常有用的JPA结构和JPA Details视图将不起作用。

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

回到OP的原始问题,我有这个EXACT相同的错误信息(它本身和closures本身告诉你,persistence.xml文件已被定位)。 对我来说,解决scheme是从这个更改持久化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"> 

一旦改变,错误就消失了,达利立即活了起来,现在一切正常。 希望这有助于某个人。

这个bug已经出现在某些Indigo(3.7)版本中。 看到这里: https : //bugs.eclipse.org/bugs/show_bug.cgi?id = 357810

右键单击项目 – > Maven – >更新项目configuration…

可能会破坏某些构buildpath条目,非常烦人,所以只能在更改Maven代码时执行此操作。

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

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

任何更新? 这仍然是一个问题,似乎是正确的? 如果我创build一个JPA项目,转换到Maven项目,错误出现,我不能用任何推荐的方法摆脱它。

编辑

那么在操纵一些文件夹以便以实际的Maven目录格式操作之后 ,它仍然不起作用 – 但是在src/main/java下创build了一个名为META-INF的链接到src/main/resources/META-INF的链接文件夹它被解决了。

创build一个Maven项目并添加JPA构面也是可行的,但仅仅是因为JPA构面将META-INF和persistence.xml文件添加到了src/main/java ,我认为这是不正确的。

我正在使用eclipse mars,并有相同的确切的错误。 我必须做的是1为项目构面设置jpa的版本。 right click project -> Properties -> Project Facets将jpa的版本设置为2.1。

注意:只需configurationjpa项目构面就不会消除错误。 您还需要configuration平台。

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

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

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

希望这对你有用。

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

现在src/main/resources/META-INF/persistence.xml不会被validation。

如果重命名为xyz_persistence.xml,它validation罚款。
如果重命名为persistence.xml,则无法validation。

当这些烦人的情况出现时,我经常会发现像我这样的许多不同的“解决scheme”,其中大部分不是普遍适用的。

所以,这里是我的“解决scheme”,我认为这是一个解决bug的方法:

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

  • 列表项目select菜单项目项目>属性>首选项>validation
  • 列表项禁用手动validation和生成validation的JPAvalidation器。

您可能需要清理和重build。 你的旅费可能会改变。

在这里输入图像说明 不需要改变你的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). 然后清理并build立你的项目。 它会为你工作。 在RAD 7&8..5&Eclipse上尝试了这种方法。

如果你出现这个问题

  • 将JPA项目转换为Maven项目或
  • 将JPA构面添加到Maven项目中。

解决scheme是

  • selectWindows>首选项>validation
  • 禁用手动validation和生成validation的JPAvalidation器

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

你的项目结构中的行踪在哪里?

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

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

  • 清理项目(“项目>清理”和Maven clean
  • 强制Eclipse再次validationXML文件(右键单击并selectvalidationXML文件)。

我几次遇到了同样的问题,对我来说,工作是复制文件的内容,删除它,并创build一个新的persistence.xml文件,并粘贴内容。

我遇到了同样的问题。 转到项目属性 – > Java构buildpath – >源,删除* / .java排除src / main / resources源的属性。 然后添加META-INF / persistence.xml。 然后重新启动eclipse。 您应该在项目浏览器中的JPA内容下的persistence.xml。 之后,恢复您的更改。

那么,我的build议似乎很愚蠢,但神奇的是它的作品。 顺便说一下,我的Eclipse版本是3.6。

这个问题已经在Indigo(2011年6月发布)中解决了,请参阅https://bugs.eclipse.org/bugs/show_bug.cgi?id=251323#c24和https://issues.sonatype.org/browse/MECLIPSEWTP -11 。

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

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

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

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

问题是,META-INF必须被视为源文件夹,因为它是在/ ejbModule(我的是一个EJB项目),我认为它是在构buildpath。 而事实并非如此。 实际上它是在构buildpath上的“排除”列表。 所以,我所做的只是右键单击项目资源pipe理器视图上的META-INF文件夹并select生成path菜单上的INCLUDE。 然后我让Eclipse来清理这个项目,一切又合适了。

最好的祝福。

我有同样的问题。 我的解决scheme:右键单击persistence.xml文件 – > JPA-Tools – > Synchronize Class List。 之后,解决了。

在我的情况下,这是Maven插件有一个错误,设置“排除” 在您的资源文件夹的生成path。 删除 为我解决了这个问题

我通过将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. 我清理build立项目。 错误消失了。

  3. 我再次添加了“http://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. 我清理build立项目。 错误不在那里。

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

  3. 我清理build立项目。 错误仍然不存在。

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

好吧…另一个相当强大的解决scheme,为我工作,因为最顶级的没有:

  • 因为我使用了Mercurial,并且可以轻松地返回,而且在当前版本和最新版本中没有任何显着差异,所以它可以这样工作:

  • 承担了一些与此问题无关的重大变化

  • 切换到以前的回购版本
  • 自动/刷新/重build运行良好

我认识到的问题可能是由于Java Builder没有生成我的war/WEB-INF/classes/文件 。 下面的工作并没有遵循这个步骤来build立我的项目:

  • 禁用/重新configurationValidators,Builders,Facets(直到只有Java Builder / Facet在那里)
  • 重命名persistence.xml或以各种方式编辑它

这并没有帮助,好像一些内部状态不能改变一样。