maven spring - не удается найти объявление элемента 'beans' - PullRequest
13 голосов
/ 11 февраля 2011

У меня есть весенний проект, построенный с использованием maven (упакован как jar) (зависимости копируются в отдельный каталог и добавляются в classpath)

Я хочу запустить его как java -jar

Проблема в том, что когда я запускаю его, я получаю:

Причина: org.xml.sax.SAXParseException: cvc-elt.1: не удается найти объявление элемента 'бобы'.

Это происходит потому, что spring.schemas и spring.handlers расположены в нескольких банках, т. Е. Spring-beans и т. Д.

Есть ли способ ее решить, если предположить, что я не хочу использовать плагин shade для распаковки всех зависимостей и объединения содержимого spring.schemas и spring.handlers?

Я также хотел бы избежать сохранения файлов xsd в моем проекте и изменения местоположения schemaLocation, чтобы указать мое местоположение.

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:camel="http://camel.apache.org/schema/spring"
    xsi:schemaLocation="
       http://www.springframework.org/schema/beans http://http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

    <camel:camelContext>
        <camel:routeBuilder ref="fakeRouteBuilder"/>
    </camel:camelContext>

    <bean id="fakeRouteBuilder" class="<className>" />


</beans>

Ответы [ 10 ]

24 голосов
/ 24 марта 2011

Я знаю 2 ситуации, когда вы можете иметь эту проблему

  • Если у вас нет подключения к Интернету (например, за прокси-сервером). В этом случае загрузите XSD, скопируйте его рядом с XML и измените расположение схемы на xsi:schemaLocation=" http://www.springframework.org/schema/beans spring-beans-2.5.xsd ..."
  • Если у вас есть интернет-соединение / проблема не устранена, это потому, что вы используете разные версии Spring для XSD и jar.
8 голосов
/ 24 марта 2011

Я думаю, что XSD будет частью весенней банки, поэтому не должно быть проблем.

5 голосов
/ 15 февраля 2012

Spring jar содержит файлы META-INF / spring.handlers и META-INF / spring.schemas.Чтобы избежать перезаписи файлов при объединении зависимостей в один jar, вы можете использовать плагин maven Shade:

http://maven.apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html#AppendingTransformer

2 голосов
/ 19 июля 2011

У меня та же проблема, потому что я был за прокси.Я запускал приложение Spring MVC под Tomcat 6. Просто добавил следующие строки в biginning моего файла catalina.bat , и это решило мою проблему:

set JAVA_OPTS=%JAVA_OPTS% -Dhttp.proxyHost=XXXX -Dhttp.proxyPort=YYYYY -Dhttp.proxyUser=ZZZZ -Dhttp.proxyPassword=XXXXXX
1 голос
/ 28 июля 2016

META-INF/INDEX.LIST файл, сгенерированный maven-assembly-plugin, также может быть виновником.

Причина: ошибка Java: «ClassLoader.getResources () возвращает только 1 экземпляр при использовании индексации jar»

Решение: отключить индексирование в дескрипторе сборки:

<indexed>false</indexed>

Ресурсы: Пружина JIRA SPR-5705 JDK-6957241 ClassLoader.getResources () возвращает только 1 экземпляр при использовании индексации jar

1 голос
/ 25 февраля 2012

Мне удалось решить аналогичную проблему, очистив файл xsd из моего кэша удаленных ресурсов, «Окно»> «Установки»> «Основные»> «Сетевое подключение»> «Кэш»

0 голосов
/ 22 февраля 2012

У меня была точно такая же проблема, и я думаю, что она вызвана двумя основными причинами:

  • У вас есть разные версии для зависимостей Spring-Security и ссылок на файлы XSD.это может произойти, если вы используете разные версии Spring Common Framework и Spring-Security.
0 голосов
/ 10 февраля 2012

Также вы можете воспользоваться советом здесь , чтобы решить эту проблему

0 голосов
/ 30 апреля 2011

Я получил эту ошибку, когда мой URL-адрес XSD указывает на другое местоположение, которое отличается от определения местоположения XSD в файле jar. Например, spring-beans-3.0.xsd вместо spring-beans-2.5.xsd наоборот.

0 голосов
/ 12 февраля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...