これの原因は何でしょうか?
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>
追加のMaven依存関係を追加する必要がありました。
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>3.0.1.RELEASE</version>
</dependency>
アプリケーションをデプロイしようとしたときに同じエラーメッセージが表示されました。 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に追加してからライブラリに追加します。
私はしばらくこれに苦労しましたが、これらの答えはどれも役に立ちませんでした。 user64141からのコメントのおかげで、spring.handlers
ファイルに問題があることがわかりました。
MavenのShadeプラグインを使用してファットjarを生成していますが、すべてのspring.handlers
(およびspring.schemas
)ファイルは各Spring依存関係によって上書きされていました。
Mavenサイトでは、この正確な問題と、代わりにファイルを追加して解決する方法について説明しています。
Spring-security-config jarを使用して問題を解決しました
解決策は間違いなく、あなたのWEB-INF/libにない「spring-security-config」です。
Mavenを使用するEclipseのプロジェクトでは、すべてのMaven依存関係がWEB-INF/libにコピーされていませんでした。 [プロジェクト]-> [プロパティ]-> [展開アセンブリ]を見ると、一部のjarのみがコピーされていました。
これを修正するために、「追加」、「Javaビルドパス全体」、最後に「Maven依存関係」をクリックしました。
これを探して最後の1時間SOとWebを検索してきたので、うまくいけば他の人の助けになります。
@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に変更すると問題が解決しました
Maven依存関係の素敵なリストは、次の場所にあります。 Spring Site 必要な主要なアーティファクトは次のとおりです。
私がしたこと:
<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
私はこの解決策を見つけました:
このjarをプロジェクトに含めます
依存関係を追加しても問題が解決しない場合は、WARアーカイブを再度作成してください。私のケースでは、security-webおよびsecurity-conf jarなしで廃止されたWARファイルを使用しました
数分前に同じ問題が発生しましたが、Deployment Assemblyに「Maven depencendies」ライブラリがありませんでした。 Eclipseの「Web Deployment Assembly」セクションで追加しました
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>
今日、非常によく似た問題に遭遇しました。何らかの理由で、IntelliJ IDEA
はアプリケーションのデプロイ中にSpring Security jarファイルを含めていません。ここのポスターの大半に同意する必要があると思います。
すでにpomにすべての依存関係がある場合は、次を試してください。
1。 「org-> springframework」のMavenリポジトリフォルダーからダウンロードしたすべてのjarを削除します
2。 Mavenクリーンビルドを作成します。
おとめ座へのデプロイ中にこのエラーが発生しました。解決策は、これをバンドルのインポートに追加することでした:
org.springframework.transaction.config;version="[3.1,3.2)",
META-INFの下のSpring jarには、spring.schemasセクションとspring.handlersセクションがあり、それらが指すクラス(この場合はorg.springframework.transaction.config.TxNamespaceHandler)をインポートする必要があることに気付きました。