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):
- Windows – >首选项 – >validation
- 向下滚动到“JPA Validator”,点击Settings下的Ellipses。
- 点击“添加包含组…”button。
- 点击看起来突出显示的新包含组。
- 点击“添加规则…”button。
- popup一个对话框菜单。 点击“文件夹或文件名”单选button,然后点击“下一步”。
- 点击“浏览文件夹…”并导航到您的项目(在我的项目是在多模块应用程序中的.war)在您的工作区中的src目录(在我的情况下,它是“src / main / resources”)。
- 点击“完成”。
- 点击“确定”。 这将提示完整的构build。
- 错误将消失。
与错误有同样的问题
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来解决它。 这就是我所要解决的问题。 我尝试了以上所有的步骤,但没有一个似乎为我工作,最后这一个做了伎俩。
刚刚解决了这个问题:
- 在schemaLocation中,我删除了“h ttp://java.sun.com/xml/ns/persistence/”使它:
xsi:schemaLocation =“http://java.sun.com/xml/ns/persistence persistence_2_0.xsd”
-
我在顶部添加了
<?xml version="1.0" encoding="UTF-8"?>
。 -
我清理build立项目。 错误消失了。
-
我再次添加了“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 ”
-
我清理build立项目。 错误不在那里。
-
我删除了顶部的
<?xml version="1.0" encoding="UTF-8"?>
。 -
我清理build立项目。 错误仍然不存在。
希望这将有助于未来的人。
好吧…另一个相当强大的解决scheme,为我工作,因为最顶级的没有:
-
因为我使用了Mercurial,并且可以轻松地返回,而且在当前版本和最新版本中没有任何显着差异,所以它可以这样工作:
-
( 承担了一些与此问题无关的重大变化 )
- 切换到以前的回购版本
- ( 自动/刷新/重build运行良好 )
我认识到的问题可能是由于Java Builder没有生成我的war/WEB-INF/classes/
文件 。 下面的工作并没有遵循这个步骤来build立我的项目:
- 禁用/重新configurationValidators,Builders,Facets(直到只有Java Builder / Facet在那里)
- 重命名
persistence.xml
或以各种方式编辑它
这并没有帮助,好像一些内部状态不能改变一样。