it-swarm-ru.tech

maven spring - не удается найти объявление элемента 'beans'

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

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

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

Вызвано: org.xml.sax.SAXParseException: cvc-elt.1: Невозможно найти объявление элемента 'beans'.

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

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

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

<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>
13
JJT

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

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

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

8
Rajendra

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

5
Tomasz

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

set Java_OPTS=%Java_OPTS% -Dhttp.proxyHost=XXXX -Dhttp.proxyPort=YYYYY -Dhttp.proxyUser=ZZZZ -Dhttp.proxyPassword=XXXXXX
2
A. Masson

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

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

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

<indexed>false</indexed>

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

1
ppeterka

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

1
Joffer

В вашей декларации XSD слишком много http://. Попробуй это:

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

(ваш был http://http://www.springframework.org/schema/beans/spring-beans-2.5.xsd)

0
Sean Patrick Floyd

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

0
Johnny

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

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

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

0
zawhtut