web-dev-qa-db-ja.com

Spring 3.0-XMLスキーマ名前空間のSpring NamespaceHandlerが見つかりません[http://www.springframework.org/schema/security]

これの原因は何でしょうか?

XMLスキーマネームスペース[ http://www.springframework.org/schema/security] のSpring NamespaceHandlerが見つかりません

org.springframework.web.context.ContextLoader initWebApplicationContext: Context initialization failed
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/security]
Offending resource: ServletContext resource [/WEB-INF/applicationContext.xml]

これは私のapplicationContext.xmlです:

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    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
        http://www.springframework.org/schema/security
        http://www.springframework.org/schema/security/spring-security-3.0.xsd">
...
</beans:beans>

私のpom.xmlには次のものがあります:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>      
    <version>3.0.1.RELEASE</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-openid</artifactId>
    <version>3.0.1.RELEASE</version>
</dependency>
175
Taylor Leese

追加のMaven依存関係を追加する必要がありました。

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>3.0.1.RELEASE</version>
    </dependency>
285
Taylor Leese

アプリケーションをデプロイしようとしたときに同じエラーメッセージが表示されました。 Springでは、セキュリティ構成xmlはapplicationContext.xmlとは異なるものにすることができます。通常は、WEB-INFフォルダー内のapplicationContext-security.xmlです。適用される変更はweb.xml用です

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/applicationContext.xml
        /WEB-INF/applicationContext-security.xml
    </param-value>
</context-param>

そして、applicationContext.xmlは次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
                        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd">

    <http auto-config='true'>
        <intercept-url pattern="/login.jsp" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
        <intercept-url pattern="/**" access="ROLE_USER" />
        <form-login login-page='login.jsp'/>
    </http>

</beans:beans>

これらの変更を行った後でも、名前空間エラーが存在します。これを取り除くには、次のjarファイルをWEB-INF/libに追加してからライブラリに追加します。

  • spring-security-acl-3.1.0.M2.jar
  • spring-security-config-3.1.0.M2.jar
  • spring-security-core-3.1.0.M2.jar
  • spring-security-taglibs-3.1.0.M2.jar
  • spring-security-web-3.1.0.M2.jar
18
James Jithin

私はしばらくこれに苦労しましたが、これらの答えはどれも役に立ちませんでした。 user64141からのコメントのおかげで、spring.handlersファイルに問題があることがわかりました。

MavenのShadeプラグインを使用してファットjarを生成していますが、すべてのspring.handlers(およびspring.schemas)ファイルは各Spring依存関係によって上書きされていました。

Mavenサイトでは、この正確な問題と、代わりにファイルを追加して解決する方法について説明しています。

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

10
Patrick Herrera

Spring-security-config jarを使用して問題を解決しました

8
abhiram

解決策は間違いなく、あなたのWEB-INF/libにない「spring-security-config」です。

Mavenを使用するEclipseのプロジェクトでは、すべてのMaven依存関係がWEB-INF/libにコピーされていませんでした。 [プロジェクト]-> [プロパティ]-> [展開アセンブリ]を見ると、一部のjarのみがコピーされていました。

これを修正するために、「追加」、「Javaビルドパス全体」、最後に「Maven依存関係」をクリックしました。

これを探して最後の1時間SOとWebを検索してきたので、うまくいけば他の人の助けになります。

6

@James Jithin-このような例外は、xsi:schemaLocationに2つの異なるバージョンのBeanとセキュリティスキーマがある場合にも表示される可能性があります。あなたが貼り付けたスニペットの場合です:

xsi:schemaLocation="http://www.springframework.org/schema/beans   
 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   
 http://www.springframework.org/schema/security  
 http://www.springframework.org/schema/security/spring-security-3.1.xsd"

私の場合、両方を3.1に変更すると問題が解決しました

3
ForestierSimon

Maven依存関係の素敵なリストは、次の場所にあります。 Spring Site 必要な主要なアーティファクトは次のとおりです。

  1. 春のセキュリティコア
  2. Spring-Security-Web
  3. spring-security-config

私がしたこと:

      <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-config</artifactId>
            <version>3.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.security</groupId>
            <artifactId>spring-security-web</artifactId>
            <version>3.2.5.RELEASE</version>
        </dependency>

そして

xsi:schemaLocation="
        http://www.springframework.org/schema/security 
        http://www.springframework.org/schema/security/spring-security-3.2.xsd
        http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.1.xsd">

完璧に動作します。もっと Baeldung

1
Xelian

私はこの解決策を見つけました:

http://www.javacreed.com/unable-to-locate-spring-namespacehandler-for-xml-schema-namespace-httpwww-springframework-orgschemamvc/

このjarをプロジェクトに含めます

0
Avinash

依存関係を追加しても問題が解決しない場合は、WARアーカイブを再度作成してください。私のケースでは、security-webおよびsecurity-conf jarなしで廃止されたWARファイルを使用しました

0
Zimbo Rodger

数分前に同じ問題が発生しましたが、Deployment Assemblyに「Maven depencendies」ライブラリがありませんでした。 Eclipseの「Web Deployment Assembly」セクションで追加しました

0
GreyStar

Pom.xmlファイルに次の依存関係を追加します。IntelliJを使用している場合は、同じjarをWEB-INF-> libフォルダーに追加します。パスはProject Structure-> Atrifacts-> Select jar from Available Elementsペインで、クリック。それぞれのフォルダに追加されます

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>3.0.1.RELEASE</version>
</dependency>
0
Sia

今日、非常によく似た問題に遭遇しました。何らかの理由で、IntelliJ IDEAはアプリケーションのデプロイ中にSpring Security jarファイルを含めていません。ここのポスターの大半に同意する必要があると思います。

0
shapiy

すでにpomにすべての依存関係がある場合は、次を試してください。
1。 「org-> springframework」のMavenリポジトリフォルダーからダウンロードしたすべてのjarを削除します
2。 Mavenクリーンビルドを作成します。

0
arviarya

おとめ座へのデプロイ中にこのエラーが発生しました。解決策は、これをバンドルのインポートに追加することでした:

org.springframework.transaction.config;version="[3.1,3.2)",

META-INFの下のSpring jarには、spring.schemasセクションとspring.handlersセクションがあり、それらが指すクラス(この場合はorg.springframework.transaction.config.TxNamespaceHandler)をインポートする必要があることに気付きました。

0
user64141