Spring 3.0 - Tidak dapat menemukan Spring NamespaceHandler untuk namespace skema XML [http://www.springframework.org/schema/security]

179

Adakah ide apa yang bisa menjadi penyebab hal ini?

Tidak dapat menemukan Spring NamespaceHandler untuk namespace skema XML [ http://www.springframework.org/schema/security]

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]

Ini adalah applicationContext.xml saya:

<?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>

Di pom.xml saya, saya punya:

<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>
Taylor Leese
sumber
Saya menemukan ini ketika mengikuti tutorial pizzashop Musim Semi
Rob Grant
Apakah ini pom.xml lengkap Anda? Karena dengan begitu kemungkinan besar Anda kehilangan toples.
Marco Schoolenberg

Jawaban:

286

Saya perlu menambahkan ketergantungan Maven tambahan:

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>3.0.1.RELEASE</version>
    </dependency>
Taylor Leese
sumber
3
+1 Untuk memecahkan masalah saya. Info lebih lanjut dapat ditemukan pada restrukturisasi pangkalan data
Rydell
Tautan yang bagus. Saya bisa menggunakannya beberapa bulan yang lalu juga.
Taylor Leese
12
Bacon disimpan oleh SO lagi!
Andrew Swan
Solusi serupa berlaku ketika hanya mencoba menggunakan spring-security-castoples.
Ryan Ransford
Saya merekomendasikan tautan ini untuk mereka yang Unable to locate Spring NamespaceHandler for XML schema namespace [xxxxx]bermasalah. Saya memiliki masalah serupa di masa lalu, dan itu banyak membantu saya!
Cotta
18

Saya memiliki pesan kesalahan yang sama ketika mencoba untuk menyebarkan aplikasi. Di musim semi, konfigurasi keamanan xml dapat berbeda dari applicationContext.xml, biasanya applicationContext-security.xml di dalam folder WEB-INF. Perubahan yang diterapkan adalah untuk web.xml

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

Dan applicationContext.xml akan terlihat seperti:

<?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>

Bahkan setelah Anda melakukan perubahan ini, kesalahan namespace akan ada. Untuk menghilangkan ini, tambahkan file jar berikut ke WEB-INF / lib dan kemudian ke perpustakaan:

  • 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
James Jithin
sumber
Anda cukup banyak harus menggunakan Maven untuk mendapatkan Spring pergi. Dan ketika Anda dengan enggan melakukan hal itu, itu masih tidak berhasil! Seseorang, ada yang tertawa terbahak-bahak ... Jawaban ini membantu mengurangi sedikit frustrasi saya.
Arne Evertsson
12

Saya berjuang dengan ini untuk sementara waktu dan tidak ada jawaban yang membantu. Berkat komentar dari user64141 saya menyadari bahwa ada masalah dengan spring.handlersfile.

Saya menggunakan plugin Shade untuk Maven untuk menghasilkan guci lemak, dan semua spring.handlers(dan spring.schemas) file ditimpa oleh setiap ketergantungan Spring.

Situs Maven mencakup masalah persis ini dan bagaimana menyelesaikannya dengan menambahkan file bersama sebagai gantinya:

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

Patrick Herrera
sumber
8

Saya menggunakan jar spring-security-config untuk menyelesaikan masalah bagi saya

abhiram
sumber
6

Solusinya pasti "spring-security-config" tidak di WEB-INF / lib Anda.

Untuk proyek saya di Eclipse menggunakan Maven, ternyata tidak semua dependensi maven sedang disalin ke WEB-INF / lib. Melihat Project -> Properties -> Deployment Assembly, hanya beberapa botol yang sedang disalin.

Untuk mengatasinya, saya mengklik "Tambah", lalu "Java Build Path Entires" dan akhirnya "Maven Dependencies".

Saya telah mencari SO dan web selama satu jam terakhir mencari ini, jadi semoga ini membantu orang lain.

Peter Sankauskas
sumber
3

Daftar bagus Dependensi Maven ada di: Situs Musim Semi Artefak utama yang diperlukan adalah:

  1. pegas-inti keamanan
  2. Spring-security-web
  3. spring-security-config
George Papatheodorou
sumber
3

@James Jithin - pengecualian seperti itu dapat muncul juga ketika Anda memiliki dua versi kacang yang berbeda dan skema keamanan di xsi: schemaLocation. Kasus di cuplikan yang Anda tempel:

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"

Dalam kasus saya mengubah keduanya menjadi 3,1 memecahkan masalah

ForestierSimon
sumber
Saya baru saja berhasil membuatnya bekerja: http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/security/spring-security-3.2.xsd Dalam kasus saya, saya kehilangan 'spring-security-config'.
Ithar
Setuju dengan komentar ini. Apakah masalah saya karena penyebab ini.
DolphinJava
2

Apa yang saya lakukan:

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

dan

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

bekerja dengan sempurna. Lebih banyak Baeldung

Xelian
sumber
0

Jika Anda sudah memiliki semua dependensi di pom Anda, cobalah:
1. Hapus semua guci yang diunduh dari folder repositori maven Anda untuk 'org-> springframework'
2. Buat build maven clean.

arviarya
sumber
0

Saya telah menemui masalah yang sangat mirip hari ini. Untuk beberapa alasan IntelliJ IDEAbelum termasuk file jar Spring Security saat menggunakan aplikasi. Saya pikir saya harus setuju dengan sebagian besar poster di sini.

shapiy
sumber
0

Saya mendapatkan kesalahan ini saat menggunakan ke Virgo. Solusinya adalah menambahkan ini ke impor bundel saya:

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

Saya perhatikan dalam botol Spring di bawah META-INF ada bagian spring.schemas dan spring.handlers, dan kelas yang mereka tuju (dalam hal ini org.springframework.transaction.config.TxNamespaceHandler) harus diimpor.

user64141
sumber
0

Memiliki masalah yang sama beberapa menit yang lalu, saya kehilangan perpustakaan 'Maven ketergantungan' di Majelis Penempatan saya. Saya menambahkannya melalui bagian 'Web Deployment Assembly' di Eclipse

GreyStar
sumber
0

jika menambahkan dependensi belum menyelesaikan masalah Anda, buat arsip WAR lagi. Dalam kasus saya, saya menggunakan file PERANG usang tanpa keamanan-web dan keamanan-confuci guci

David
sumber
0

Tambahkan dependensi berikut dalam file pom.xml Anda dan jika Anda menggunakan IntelliJ kemudian tambahkan toples yang sama ke WEB-INF-> folder lib .... path adalah Project Structure -> Atrifacts -> Pilih toples dari panel Elemen yang Tersedia dan gandakan klik. Ini akan menambah folder masing-masing

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