Ошибка в схеме контекста приложения spring
У меня есть проект maven- spring в Eclipse, и у меня есть это раздражающее сообщение об ошибке в одном из моих контекстов spring:
Связанный файл содержит ошибки (jar: файл:/M2_HOME/репозиторий/org/springframework/ spring - beans/3.1.2.RELEASE/spring - beans -3.1.2.RELEASE.jar!/орг/springframework/beans/ factory/XML/spring -tool-3.1.xsd). Для получения дополнительной информации щелкните правой кнопкой мыши сообщение в окне "Проблемы" и выберите "Показать детали..."
Сеты для шоу приводят к следующему:
![enter image description here]()
Я использую spring -data-jpa 1.2.0.RELEASE, а остальные мои spring - 3.1.3.RELEASE. Что касается spring -data-commons-core - у меня даже нет зависимости от этого баннера в моем pom, но я вижу его в моем репозитории 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, которая сводит меня с ума:)
Ответы
Ответ 1
Я решил это, выполнив 3 вещи:
-
Добавил этот репозиторий в мой POM:
<repository>
<id>spring-milestone</id>
<name>Spring Maven MILESTONE Repository</name>
<url>http://repo.springsource.org/libs-milestone</url>
</repository>
-
Я использую эту версию spring -jpa:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>1.2.0.RELEASE</version>
</dependency>
-
Я удалил версии 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">
Надеюсь, это поможет.
Ответ 2
Недавно у меня была аналогичная проблема в последнем Eclipse (Kepler) и исправлена ее, отключив опцию "Почитайте все расположения схем XML" в разделе "Настройки" > "XML" > "Файлы XML" > "Проверка".
Он отключает проверку ссылок на те же пространства имен, которые указывают на разные местоположения схемы, только если первое обнаружено в основном в файле 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
Ответ 3
Что я сделал с 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.
Ответ 4
Иногда файл spring config xml работает неправильно при открытии следующего затмения.
Он показывает ошибку в файле xml, вызванную определением схемы, независимо от того, заново затмение или проект очистки не работают.
Но попробуйте это!
Щелкните правой кнопкой мыши файл spring config xml и выберите validate
.
Через некоторое время ошибка исчезнет, и eclipse сообщает, что в этом файле нет ошибки.
Какая шутка...
Ответ 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-валидации, они были одинаковыми.
Это было решено удалением spring-context-4.0.xsd из атрибута xsi: schemaLocation:
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
После этого все заработало как положено.
Ответ 6
У меня недавно была такая же проблема с 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
">
Ответ 7
Что @forhas и @HRgiger также работал у меня. Я использую spring-data-mongodb
вместо jpa
.
Однако для привязок mongodb вам не следует удалять версию ссылки xsd mongodb, просто сохраните ее с версией: http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd
. context
и beans
версии должны быть удалены.
Ответ 8
Я удалил эту ошибку, обновив номер версии в
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
до 4.3, как я обновил весеннюю версию в pom как 4.3.7.RELEASE
Ответ 9
Ссылочный файл содержит ошибки (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.
Ответ 10
Если у вас нет контроля над этими файлами, поскольку эти файлы могут быть частью других проектов, и вы не авторизованы вносить какие-либо изменения, вы можете обойти эти ошибки в затмении, выбрав "Предпочтения" → "XML" → "Файлы XML". → Проверка → Ссылочный файл содержит ошибки → выберите опцию Игнорировать.
И пусть проект будет проверен, сообщение об ошибке исчезнет.
Ответ 11
использовать этот:
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"
Ответ 12
Я также столкнулся с этой проблемой и исправил ее, удалив часть версии из имени XSD.
http://www.springframework.org/schema/beans/spring-beans-4.2.xsd to http://www.springframework.org/schema/beans/spring-beans.xsd
Версии без XSD сопоставляются с текущей версией платформы, используемой в приложении.
Ответ 13
Это случилось со мной после обновления версии Eclipse. То, что работает для меня, было чистым тайником затмения. Перейдите в "Окно"> "Установки"> "Сетевое подключение"> "Кэш"> "Удалить все".
Я надеюсь, что это работает для всех!