web-dev-qa-db-ja.com

Spring 3.0:XMLスキーマ名前空間のSpring NamespaceHandlerが見つかりません

私のセットアップは非常に簡単です。ウェブのフロントエンドがあり、バックエンドはスプリング接続されています。

AOPを使用して、rpcサービスにセキュリティのレイヤーを追加しています。

Webアプリが起動時に中断するという事実を除いて、すべて良好です。

 [Java] SEVERE:コンテキストの初期化に失敗しました
 [Java] org.springframework.beans.factory.parsing.BeanDefinitionParsingException:構成の問題:XMLスキーマ名前空間のSpring NamespaceHandlerが見つかりません[http:// www.springframework.org/schema/aop]
 [Java]問題のリソース:ServletContextリソース[/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
38
Nick Hristov

すべてのjarファイルをサブディレクトリではなく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

残りの瓶についても同じです。

9
Peter Lynch

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>

(クレジット: 単一のjarで複数のSpring依存関係をマージするときにspring.handlers/spring.schemasが上書きされるのを避けるためのアイデア

48
xgMz

http://maven.Apache.org/plugins/maven-shade-plugin/examples/resource-transformers.html

私はmaven-shade-pluginを使用して同様の問題に遭遇しました。上記の例のページで問題の解決策を見つけました。

16
Kevin

使用しているIDE(存在する場合)?これは、IDE内で作業しているとき、またはデプロイメント時にのみ発生しますか? -依存関係を持つ1つのJARを作成するmaven-Assemblyは 既知の原因 -すべてのJARを1つのディレクトリに折りたたみ、Springスキーマとハンドラーファイルは互いに上書きします。

12
delfuego

同様のエラーが発生しましたが、新しく作成されたRooプロジェクトでSpring Webflowを参照しました。私にとっての解決策は、(プロジェクト)/右クリック/ Maven/Maven依存関係の有効化(その後に再起動してTomcatに再公開する)でした。

STSまたはm2EclipseがすべてのSpring Webflow jarをWebアプリのlibディレクトリにプッシュできなかったようです。理由はわかりません。しかし、Maven依存関係の処理を有効にしてから再構築することで問題は解決したようです。 Webflow jarが最終的に公開されるため、スキーマ名前空間の参照を見つけることができます。

これを調査するために、Webアプリの公開先のTomcatディレクトリを調べ、実行中にWEB-INF/lib /をクリックして、webflow jarファイルが欠落していることに気付きました。

1
skywind

このトリックも私にとってはうまくいきました。Eclipseでプロジェクトを右クリックし、[Maven]> [依存関係の更新]の順にクリックします。

1
javasun

すべての依存関係が解決されていることを確認してください

春のチュートリアルに続いて、AOPでの最初の試みでこの問題に遭遇しました。私の問題はspring-aop.jar私のクラスパス。チュートリアルには、追加する必要がある他のすべての依存関係、つまり、

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

しかし、1つが欠落していました。元の質問でその症状を引き起こす可能性があるもう1つの問題。

Eclipse(ネオン)、Java SE 8、beans 3.0、spring AOP 3.0、Spring 4.3.4。を使用しています。問題はJavaビュー- -JEEではない-そして、右ボタンメニューでアプリケーションを実行しようとしているとき-> Run As-> Java Application。

0
manuelvigarcia

mvnを使用する場合は、pom.xmlに正しいスコープがあることを確認します(定義されている場合)。かつて誤ってtestに設定していましたが、runtimeに必要でした。

0
panksdmz

他の誰かがこの問題に遭遇した場合に備えて、Eclipseを使用しました。右クリックアクションでプロジェクトを実行します。このエラーはJ2EEビューで発生しましたが、Javaビューでは発生しませんでした。不明-正しい 'lib'ディレクトリにライブラリを追加することを想定しています。

また、Mavenプロジェクトを使用して、m2Eclipseが依存関係を管理できるようにします。

0
wuntee

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のみを読み取ります。

グレッティング。 pacovr