我在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
通过设置选项将其显示为警告而不是错误来暂时解决
答案 0 :(得分:32)
我通过以下方式修复了问题(我正在使用RAD v8.5.1):
答案 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。
注意:强> 只是配置jpa项目构面不会删除错误。您还需要配置平台。
接下来我必须配置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)
如果您
,则会出现此问题解决方案是
更改这些设置后,请清理项目。
答案 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:
您可能需要清理和重建。您的里程可能会有所不同。
答案 12 :(得分:1)
无需更改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)
通过这样做解决了这个问题:
xsi:schemaLocation =“http://java.sun.com/xml/ns/persistence persistence_2_0.xsd”
我在顶部添加了<?xml version="1.0" encoding="UTF-8"?>
。
我清理构建项目。错误消失了。
我再次添加了“h ttp://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”
我清理构建项目。错误不存在。
我删除了顶部的<?xml version="1.0" encoding="UTF-8"?>
。
我清理构建项目。错误仍然不存在。
希望这有助于将来。
答案 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并且可以轻松返回,而且当前版本和最后版本没有任何显着差异,它以这种方式工作:
(提交了一些与此问题无关的重要更改)
我认识到的是,问题可能是由于 Java Builder没有生成我的war/WEB-INF/classes/
文件。以下没有按照这条路径让它构建我的项目:
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#c24和https://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
完全有效)但可能会尝试:
clean
)