18

我在 Eclipse 中有一个 maven-spring 项目,并且在我的一个 spring 上下文中出现了这个烦人的错误消息:

引用的文件包含错误(jar:file:/M2_HOME/repository/org/springframework/spring-beans/3.1.2.RELEASE/spring-beans-3.1.2.RELEASE.jar!/org/springframework/beans/factory/xml /spring-tool-3.1.xsd)。有关更多信息,请右键单击问题视图中的消息并选择“显示详细信息...”

演出细节导致了这一点:

在此处输入图像描述

我使用 spring-data-jpa 1.2.0.RELEASE,其余的 spring jar 是 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 中这个恼人的红色错误标记让我发疯:)

4

16 回答 16

23

我最近在最新的 Eclipse (Kepler) 中遇到了类似的问题,并通过在 Preferences > XML > XML Files > Validation 中禁用“尊重所有 XML 模式位置”选项来修复它。它禁用对指向不同模式位置的相同命名空间的引用的验证,只采用通常在被验证的 XML 文件中找到的第一个。此选项来自 Xerces 库。

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

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

于 2014-01-14T19:51:59.407 回答
14

我通过做 3 件事解决了这个问题:

  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">
    

我希望这有帮助。

于 2012-12-06T08:31:52.913 回答
11

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

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

但是试试这个!

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

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

真是笑话...

于 2016-10-03T07:44:56.067 回答
8

我对 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 中。

于 2013-02-22T11:20:19.947 回答
5

我最近对 ​​Spring 4.0 有同样的问题。

这是由spring-beans-4.0.xsd和的名称冲突引起的spring-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 抱怨“......一个模式不能包含两个具有相同名称的全局组件......”

一个值得注意的方面是 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

在此之后,一切都按预期工作。

于 2015-01-13T03:31:57.413 回答
4

我最近对 ​​JPA-1.3 有同样的问题

在我使用明确的 tools.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
        ">
于 2013-02-17T04:30:31.027 回答
4

如果您无法控制这些文件,因为这些文件可能是其他项目的一部分并且您无权进行任何更改,那么您可以通过 Preferences --> XML --> XML Files 在 eclipse 中绕过这些错误--> 验证 --> 引用的文件包含错误 --> 选择忽略选项。

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

于 2019-05-17T07:25:45.527 回答
3

@forhas 和 @HRgiger 所做的也对我有用。我正在使用spring-data-mongodb而不是jpa.

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

于 2013-07-23T11:52:48.643 回答
2

我通过更新版本号删除了这个错误

  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

于 2018-09-02T00:08:23.103 回答
1

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

http://www.springframework.org/schema/beans/spring-beans-4.2.xsd to http://www.springframework.org/schema/beans/spring-beans.xsd

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

于 2018-10-02T11:44:51.707 回答
1

引用的文件包含错误(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 模式验证器。

于 2019-04-15T09:48:50.850 回答
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"
于 2018-03-12T12:54:56.257 回答
0

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

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

于 2019-07-15T12:00:47.377 回答
0

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

结果:TODO 问题已解决

于 2019-11-24T04:54:38.303 回答
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>
于 2021-06-29T07:48:14.797 回答
0

确保 jar 文件已正确添加,然后转到此处进行其余操作

于 2022-02-10T10:29:01.143 回答