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>

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>

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

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


8

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


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.



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


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


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.


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.


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.



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


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


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>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.