Spring应用程序上下文模式出错

时间:2012-12-03 22:40:40

标签: spring xsd spring-data

我在Eclipse中有一个maven-spring项目,我在我的一个春季上下文中有这个恼人的错误信息:

  

引用文件包含错误(jar:file:/M2_HOME/repository/org/springframework/spring-beans/3.1.2.RELEASE/spring-beans-3.1.2.RELEASE.jar!/ org / springframework / beans /    工厂/ XML /弹簧刀具3.1.xsd)。有关详细信息,请右键单击“问题视图”中的消息,然后选择“显示详细信息...”

演出的秘密导致了这个:

enter image description here

我使用spring-data-jpa 1.2.0.RELEASE,其余的春季罐子是3.1.3.RELEASE。关于spring-data-commons-core - 我甚至没有依赖于我的pom中的这个jar,但我可以在我的m2存储库中看到它以及spring-data-commons-parent和版本1.4.0.RELEASE ,我不知道为什么(也许那些是spring-data-jpa的一部分?)。

我的应用程序上下文架构:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="
   http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
   http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
   http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.2.xsd">

我不明白为什么我一直收到这个错误。基本上它没有任何影响,应用程序编译,部署和运行就好了,这只是Eclipse中令人讨厌的红色错误标记让我发疯:)

15 个答案:

答案 0 :(得分:19)

我最近在最新的Eclipse(Kepler)中遇到了类似的问题,并通过在Preferences&gt;中禁用“Honor all XML schema locations”选项来修复它。 XML&gt; XML文件&gt;验证。 它禁用对指向不同模式位置的相同名称空间的引用的验证,仅对正在验证的XML文件中找到的第一个名称空间进行验证。此选项来自Xerces库。

WTP Doc:http://www.eclipse.org/webtools/releases/3.1.0/newandnoteworthy/sourceediting.php

Xerces Doc:http://xerces.apache.org/xerces2-j/features.html#honour-all-schemaLocations

答案 1 :(得分:11)

我通过做三件事来解决它:

  1. 将此存储库添加到我的POM中:

    <repository>
        <id>spring-milestone</id>
        <name>Spring Maven MILESTONE Repository</name>
        <url>http://repo.springsource.org/libs-milestone</url>
    </repository>
    
  2. 我正在使用这个版本的spring-jpa:

    <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-jpa</artifactId>
        <version>1.2.0.RELEASE</version>
    </dependency>
    
  3. 我从我的上下文中删除了xsd版本(虽然我不确定是否有必要):

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
      xmlns:context="http://www.springframework.org/schema/context"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
      xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:tx="http://www.springframework.org/schema/tx"
      xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
       http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd
       http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd">
    
  4. 我希望这会有所帮助。

答案 2 :(得分:7)

我使用spring-data-jpa-1.3做的是向xsd添加一个版本并将其降低到1.2。然后错误消息消失。喜欢这个

<beans
        xmlns="http://www.springframework.org/schema/beans"
        ...
        xmlns:jpa="http://www.springframework.org/schema/data/jpa"
        xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    ...
    http://www.springframework.org/schema/data/jpa
    http://www.springframework.org/schema/data/jpa/spring-jpa-1.2.xsd">

似乎它已针对1.2进行了修复,但随后再次出现在1.3中。

答案 3 :(得分:4)

我最近遇到了与Spring 4.0相同的问题。

这是由spring-beans-4.0.xsdspring-context-4.0.xsd名称中的碰撞引起的。 打开spring-context-4.0.xsd,您可以看到导入spring-beans-4.0.xsd,如下所示:

<xsd:import namespace="http://www.springframework.org/schema/beans"  
schemaLocation="http://www.springframework.org/schema/beans/spring-beans-4.0.xsd"/>

这些名称的冲突使Eclipse抱怨&#34; ...架构不能包含两个具有相同名称的全局组件......&#34;

一个值得注意的方面是我没有使用Eclipse Kepler SR2这个问题,但Eclipse Luna SR1比较了两个关于XML验证的偏好,它们是相同的。

通过从xsi:schemaLocation属性中删除spring-context-4.0.xsd来解决:

http://www.springframework.org/schema/context   
http://www.springframework.org/schema/context/spring-context-4.0.xsd

在此之后,一切都像预期的那样发挥作用。

答案 4 :(得分:4)

有时spring config xml文件在下一个eclipse打开时效果不佳。

它显示了由架构定义引起的xml文件中的错误,无论重新打开eclipse还是清理项目都不起作用。

但试试这个!

  

右键单击spring config xml文件,然后选择validate

过了一会儿,错误就消失了,eclipse告诉你这个文件没有错误。

多么开玩笑......

答案 5 :(得分:3)

我最近遇到了与JPA-1.3相同的问题

在我使用显式工具.xsd链接

之前,没有任何效果
xsi:schemaLocation=" ...
    http://www.springframework.org/schema/tool
    http://www.springframework.org/schema/tool/spring-tool-3.2.xsd
    ... ">
像这样:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    xmlns:jpa="http://www.springframework.org/schema/data/jpa"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
        http://www.springframework.org/schema/jdbc 
        http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
        http://www.springframework.org/schema/data/jpa
        http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
        http://www.springframework.org/schema/tool
        http://www.springframework.org/schema/tool/spring-tool-3.2.xsd
        ">

答案 6 :(得分:3)

@forhas和@HRgiger的确对我有用。我使用spring-data-mongodb代替jpa

但是,对于mongodb绑定,您不应删除mongodb引用xsd的版本,只需将其保留为版本:http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd。应删除contextbeans版本。

答案 7 :(得分:1)

我通过更新版本号来消除此错误

  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 

到4.3,因为我在pom中将spring版本更新为4.3.7.RELEASE

答案 8 :(得分:0)

使用它:

xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"

答案 9 :(得分:0)

我也遇到了这个问题,并通过从XSD名称中删除版本部分来解决了该问题。

Title

将版本少于XSD的版本映射到应用程序中使用的框架的当前版本。

答案 10 :(得分:0)

  

引用的文件包含错误   (http://www.springframework.org/schema/context/spring-context-3.0.xsd

我遇到了这个问题,当我配置dispatcher-servlet.xml时,可以删除此问题:

xsi:schemaLocation="http://www.springframework.org/schema/beans
  http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/context
  http://www.springframework.org/schema/context/spring-context-3.0.xsd"

从您的xml中,您还可以按照以下步骤进行操作 转到窗口->首选项->验证->以及未选中的XML验证器和XML模式验证器。

答案 11 :(得分:0)

如果您没有控制这些文件的权限,因为这些文件可以成为其他项目的一部分,并且您无权进行任何更改,则可以通过使用Preferences-> XML-来绕过Eclipse中的这些错误。 > XML文件->验证->引用的文件包含错误->选择忽略选项。

并让项目得到验证,错误消息将消失。

答案 12 :(得分:0)

升级eclipse版本后,这发生在我身上。对我有用的是清理Eclipse缓存。转到窗口>首选项>网络连接>缓存>全部删除。

我希望这对任何人都有效!

答案 13 :(得分:0)

解决此问题的步骤 1.右键单击您的项目 2.点击验证选项

结果:TODO问题已解决

答案 14 :(得分:0)

添加这个 xml 配置文件。这不是显示错误。

 http://www.springframework.org/schema/tool
        http://www.springframework.org/schema/tool/spring-tool.xsd

示例

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/tool
    http://www.springframework.org/schema/tool/spring-tool.xsd">
</beans>