Spring 3.0 - ไม่สามารถค้นหา Spring NamespaceHandler สำหรับเนมสเปซ XML schema [http://www.springframework.org/schema/security]


179

ความคิดใดที่เป็นสาเหตุของสิ่งนี้

ไม่สามารถค้นหา Spring NamespaceHandler สำหรับ XML schema namespace [ 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]

นี่คือ 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>

ฉันกดปุ่มนี้เมื่อติดตามการสอน pizzashop ของ Spring
Rob Grant

นี่คือ pom.xml ที่สมบูรณ์ของคุณหรือไม่ เพราะถ้าเช่นนั้นขวดของคุณอาจหายไปมากที่สุด
Marco Schoolenberg

คำตอบ:


286

ฉันต้องการเพิ่มการพึ่งพา Maven เพิ่มเติม:

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

3
+1 สำหรับการแก้ปัญหาของฉัน ข้อมูลเพิ่มเติมสามารถพบได้ในการปรับโครงสร้างของรหัสความปลอดภัยฤดูใบไม้ผลิ 3.0 codebase ที่: blog.springsource.com/2009/06/03/spring-security-300m1-release
Rydell

ลิงค์ที่ดี ฉันสามารถใช้มันไม่กี่เดือนที่ผ่านมาเช่นกัน
Taylor Leese

12
เบคอนบันทึกโดย SO อีกครั้ง!
Andrew Swan

วิธีการแก้ปัญหาที่คล้ายกันถือเมื่อพยายามที่จะใช้spring-security-casขวดเท่านั้น
Ryan Ransford

ฉันแนะนำลิงก์นี้สำหรับผู้ที่มีUnable to locate Spring NamespaceHandler for XML schema namespace [xxxxx]ปัญหา ฉันมีปัญหาที่คล้ายกันในอดีตและนั่นก็ช่วยฉันได้มาก!
Cotta

18

ฉันมีข้อความแสดงข้อผิดพลาดเดียวกันขณะพยายามปรับใช้แอปพลิเคชัน ใน Spring การกำหนดค่าความปลอดภัย xml อาจแตกต่างจาก applicationContext.xml โดยทั่วไปคือ applicationContext-security.xml ภายในโฟลเดอร์ WEB-INF การเปลี่ยนแปลงที่จะนำไปใช้สำหรับ 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>

แม้หลังจากที่คุณทำการเปลี่ยนแปลงเหล่านี้ข้อผิดพลาด namespace จะมีอยู่ หากต้องการกำจัดสิ่งนี้ให้เพิ่มไฟล์ jar ต่อไปนี้ลงใน WEB-INF / lib แล้วไปที่ไลบรารี:

  • ฤดูใบไม้ผลิรักษาความปลอดภัย ACL-3.1.0.M2.jar
  • ฤดูใบไม้ผลิการรักษาความปลอดภัย-config-3.1.0.M2.jar
  • ฤดูใบไม้ผลิรักษาความปลอดภัยแกน 3.1.0.M2.jar
  • ฤดูใบไม้ผลิรักษาความปลอดภัย taglibs-3.1.0.M2.jar
  • ฤดูใบไม้ผลิรักษาความปลอดภัยบนเว็บ 3.1.0.M2.jar

คุณต้องใช้ Maven เพื่อให้ฤดูใบไม้ผลิก้าวไป และเมื่อคุณทำอย่างไม่เต็มใจมันก็ยังไม่ทำงาน! ใครบางคนกำลังหัวเราะอย่างหนัก ... คำตอบนี้ช่วยลดความคับข้องใจของฉันได้เล็กน้อย
Arne Evertsson

12

ฉันดิ้นรนกับสิ่งนี้มาระยะหนึ่งและไม่มีคำตอบใดที่ช่วยได้ ขอบคุณที่แสดงความคิดเห็นจากผู้ใช้64141ฉันตระหนักว่ามีปัญหากับspring.handlersไฟล์

ฉันกำลังใช้ปลั๊กอิน Shade สำหรับ Maven เพื่อสร้าง jar ไขมันspring.handlersและspring.schemasไฟล์(และ) ทั้งหมดถูกเขียนทับโดยการพึ่งพาของ Spring แต่ละครั้ง

ไซต์ Maven ครอบคลุมปัญหาที่แน่นอนนี้และวิธีแก้ไขโดยผนวกไฟล์เข้าด้วยกันแทน:

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



6

วิธีแก้ปัญหาคือ "spring-security-config" ไม่ใช่ใน WEB-INF / lib ของคุณ

สำหรับโครงการของฉันใน Eclipse โดยใช้ Maven ปรากฏว่าไม่ได้มีการคัดลอกการพึ่งพา Maven ทั้งหมดไปยัง WEB-INF / lib ดูที่โครงการ -> คุณสมบัติ -> ชุดประกอบการปรับใช้มีเพียงบางขวดเท่านั้นที่ถูกคัดลอก

เพื่อแก้ไขปัญหานี้ฉันคลิก "เพิ่ม" จากนั้น "Java Build Path Entires" และสุดท้าย "Maven Dependencies"

ฉันค้นหา SO และเว็บในชั่วโมงสุดท้ายเพื่อค้นหาสิ่งนี้ดังนั้นหวังว่านี่จะช่วยคนอื่นได้


3

รายการที่น่าเชื่อถือของ Maven Dependencies มีอยู่ที่: Spring Site วัตถุสำคัญที่ต้องการคือ:

  1. ฤดูใบไม้ผลิรักษาความปลอดภัยหลัก
  2. ฤดูใบไม้ผลิการรักษาความปลอดภัยเว็บ
  3. ฤดูใบไม้ผลิการรักษาความปลอดภัย-config

3

@James Jithin - ข้อยกเว้นดังกล่าวสามารถปรากฏขึ้นได้เช่นกันเมื่อคุณมี beans และ schema ความปลอดภัยในสองเวอร์ชันที่แตกต่างกันใน xsi: schemaLocation เป็นกรณีในตัวอย่างที่คุณวาง:

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 แก้ไขปัญหา


ฉันแค่จัดการเพื่อให้มันทำงานกับ: http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/security/spring-security-3.2.xsd ในกรณีของฉันฉันมี jar 'spring-security-config' หายไป
Ithar

เห็นด้วยกับความคิดเห็นนี้ มีปัญหาของฉันเนื่องจากสาเหตุนี้
DolphinJava

2

ฉันทำอะไรลงไป:

      <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


0

หากคุณมีการอ้างอิงทั้งหมดใน pom ของคุณแล้วให้ลอง:
1. ลบไหที่ดาวน์โหลดทั้งหมดออกจากโฟลเดอร์ที่เก็บ Maven ของคุณสำหรับ 'org-> springframework'
2. สร้าง maven clean build


0

ฉันพบปัญหาที่คล้ายกันมากในวันนี้ ด้วยเหตุผลบางอย่างIntelliJ IDEAไม่ได้รวมไฟล์ jar ของ Spring Security ในขณะที่ปรับใช้แอปพลิเคชัน ฉันคิดว่าฉันควรเห็นด้วยกับโปสเตอร์ส่วนใหญ่ที่นี่


0

ฉันได้รับข้อผิดพลาดนี้ในขณะที่ปรับใช้กับราศีกันย์ ทางออกคือการเพิ่มสิ่งนี้ไปยังการนำเข้ามัดของฉัน:

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

ฉันสังเกตเห็นใน Spring jars ภายใต้ META-INF มีส่วน spring.schemas และ spring.handlers และคลาสที่พวกเขาชี้ไปที่ (ในกรณีนี้ org.springframework.transaction.config.TxNamespaceHandler) ต้องนำเข้า



0

มีปัญหาเดียวกันเมื่อไม่กี่นาทีที่ผ่านมาฉันหายไปจากห้องสมุด 'Mencen depencendies' ใน Deployment Assembly ของฉัน ฉันเพิ่มเข้าไปในส่วน 'Web Deployment Assembly' ใน Eclipse


0

หากการเพิ่มการพึ่งพาไม่สามารถแก้ไขปัญหาของคุณได้ให้สร้างที่เก็บถาวรของ WAR อีกครั้ง ในกรณีของฉันฉันใช้ไฟล์ WAR ที่ล้าสมัยโดยไม่มี security-web และไหความปลอดภัย


0

เพิ่มการพึ่งพาต่อไปนี้ในไฟล์ pom.xml ของคุณและหากคุณใช้ IntelliJ ให้เพิ่ม jars เดียวกันไปยัง WEB-INF-> โฟลเดอร์ lib ... เส้นทางคือโครงสร้างโครงการ -> Atrifacts -> เลือก jar จากบานหน้าต่างองค์ประกอบที่มีอยู่และดับเบิล คลิก. มันจะเพิ่มไปยังโฟลเดอร์ที่เกี่ยวข้อง

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>3.0.1.RELEASE</version>
</dependency>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.