Подтвердить что ты не робот

Spring 3.0: невозможно найти Spring пространство имен имен пространства имен для пространства XML-схем

Моя настройка довольно проста: у меня есть веб-интерфейс, back-end spring -wired.

Я использую AOP для добавления уровня безопасности в свои службы rpc.

Все хорошо, за исключением того, что веб-приложение прерывается при запуске:

  [java] SEVERE: Context initialization failed
     [java] org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/aop]
     [java] Offending resource: ServletContext resource [/WEB-INF/gwthandler-servlet.xml]

Вот фрагмент из моего конфигурационного файла xml:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    <aop:config>
        <aop:aspect id="security" ref="securityAspect" >
            <aop:pointcut id="securedServices" expression="@annotation(com.fb.boog.common.aspects.Secured)"/>
            <aop:before method="checkSecurity" pointcut-ref="securedServices"/>
        </aop:aspect>
    </aop:config>

Я читал по интернетам, что это может быть мой класс, загружающий суть проблемы. Сомневаюсь, так как вот мой каталог WEB-INF/lib:

./WEB-INF/lib
./WEB-INF/lib/aopalliance-alpha1.jar
./WEB-INF/lib/aspectj-1.6.6.jar
./WEB-INF/lib/commons-collections.jar
./WEB-INF/lib/commons-logging.jar
./WEB-INF/lib/ehcache-core-1.7.0.jar
./WEB-INF/lib/ejb3-persistence.jar
./WEB-INF/lib/hibernate
./WEB-INF/lib/hibernate/antlr.jar
./WEB-INF/lib/hibernate/asm.jar
./WEB-INF/lib/hibernate/bsh-2.0b1.jar
./WEB-INF/lib/hibernate/cglib.jar
./WEB-INF/lib/hibernate/dom4j.jar
./WEB-INF/lib/hibernate/freemarker.jar
./WEB-INF/lib/hibernate/hibernate-annotations.jar
./WEB-INF/lib/hibernate/hibernate-shards.jar
./WEB-INF/lib/hibernate/hibernate-tools.jar
./WEB-INF/lib/hibernate/hibernate.jar
./WEB-INF/lib/hibernate/jtidy-r8-20060801.jar
./WEB-INF/lib/jabsorb
./WEB-INF/lib/jabsorb/jabsorb-1.3.1.jar
./WEB-INF/lib/jta.jar
./WEB-INF/lib/jyaml-1.3.jar
./WEB-INF/lib/postgresql-8.4-701.jdbc4.jar
./WEB-INF/lib/sjsxp.jar
./WEB-INF/lib/spring
./WEB-INF/lib/spring/org.springframework.aop-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.asm-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.aspects-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.beans-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.context-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.context.support-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.core-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.expression-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.instrument-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.instrument.tomcat-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.jdbc-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.jms-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.orm-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.oxm-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.test-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.transaction-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.web-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.web.portlet-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.web.servlet-3.0.0.RELEASE.jar
./WEB-INF/lib/spring/org.springframework.web.struts-3.0.0.RELEASE.jar
./WEB-INF/lib/testng-5.11-jdk15.jar
./WEB-INF/web.xml
4b9b3361

Ответ 1

Вы пытались поместить все свои банки непосредственно в директорию WEB-INF/lib вместо поддиреев этого?

Нет WEB-INF/lib/spring/org.springframework.aop-3.0.0.RELEASE.jar, просто WEB-INF/lib/org.springframework.aop-3.0.0.RELEASE.jar

То же самое с остальными банками.

Ответ 2

Обнаружена эта ошибка при использовании maven-shade-plugin, решение включало:

META-INF/spring.schemas

и

META-INF/spring.handlers

трансформаторы в maven-shade-plugin при построении...

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                    <goal>shade</goal>
                </goals>
                <configuration>
                    <transformers>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                            <resource>META-INF/spring.handlers</resource>
                        </transformer>
                        <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                            <resource>META-INF/spring.schemas</resource>
                        </transformer>
                    </transformers>
                </configuration>
            </execution>
        </executions>
    </plugin>

(Credits: Идея избежать того, что spring.handlers/spring.schemas будут перезаписаны при объединении нескольких зависимостей spring в одной банке)

Ответ 4

Какие IDE (если есть) вы используете? Это происходит, когда вы работаете в среде IDE или только при развертывании? Если это развертывание, это может быть связано с тем, что любой механизм развертывания, который вы используете - maven-assembly, создающий один JAR с зависимостями, - известный преступник - сворачивает все ваши JAR файлы в один каталог, а файлы схемы и обработчика Spring переписывают друг друга.

Ответ 5

Я столкнулся с аналогичной ошибкой, но ссылаюсь на Spring Webflow во вновь созданном проекте Roo. Решение для меня оказалось (Project)/right-click/Maven/Enable Maven Dependencies (за которым следуют некоторые перезагрузки и переиздается Tomcat).

Похоже, что STS или m2Eclipse не смогли вытолкнуть все баннеры веб-потока Spring в каталог lib веб-приложения. Я не знаю, почему. Однако включение обработки зависимостей maven, а затем восстановление, похоже, устранило проблему; баннеры веб-потока, наконец, публикуются и, следовательно, могут найти ссылки на пространство имен схемы.

Я исследовал это, изучив каталог tomcat, в который было опубликовано веб-приложение, щелкнув в WEB-INF/lib/во время его запуска и заметив, что ему не хватает файлов java веб-потока.

Ответ 6

Этот трюк тоже работал у меня: в Eclipse щелкните правой кнопкой мыши проект, а затем Maven > Update Dependencies.

Ответ 7

Если кто-то еще сталкивается с этой проблемой, я просто использовал Eclipse; запуская проект с помощью действия правой кнопки мыши. Эта ошибка произошла в представлении J2EE, но не произошла в представлении Java. Не уверен - предполагая что-то с добавлением библиотек в правильный каталог "lib".

Я также использую проект Maven, позволяя m2eclipse управлять зависимостями.

Ответ 8

У меня такая же проблема с spring 3.0.2 и spring - beans -3.0.xsd.

Мое решение:

Создайте файл META-INF/ spring.schemas в исходной папке и скопируйте все необходимые определения. Создайте также spring.handlers.

Я думаю, что класс PluggableSchemaResolver работает неправильно.

http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/beans/factory/xml/PluggableSchemaResolver.html

из javadoc:

"По умолчанию этот класс будет искать файлы сопоставления в пути к классам с помощью шаблона: META-INF/ spring.schemas, позволяющий одновременно использовать несколько файлов в пути к классам.

но в моем случае этот класс читает только первые найденные spring.schemas.

Grettings. pacovr

Ответ 9

Если вы используете mvn, убедитесь, что у вас есть правильная область (если у вас есть это) в pom.xml. Я когда-то неправильно его тестировал, но нуждался в нем для выполнения.

Ответ 10

Убедитесь, что у вас есть все зависимости, разрешенные

Я столкнулся с этой проблемой при первой попытке AOP, после учебника spring. Моя проблема заключалась в отсутствии spring-aop.jar в моем пути к классам. В учебнике перечислены все другие зависимости, которые я должен был добавить, а именно:

  • aspectjrt.jar
  • aspectjweaver.jar
  • aspectj.jar
  • aopalliance.jar

Но этого не было. Еще одна проблема, которая может внести свой вклад в этот симптом в исходном вопросе.

Я использую Eclipse (neon), Java SE 8, beans 3.0, spring AOP 3.0, spring 4.3.4. Проблема, проявленная в представлении Java - не JEE--, и при попытке просто запустить приложение с помощью меню правой кнопки → Запустить как → Приложение Java.

Ответ 11

Вы также можете попробовать использовать плагин one-jar maven, который исправил проблему для нас. Просто следуйте инструкциям здесь.