Spring 3.0 - Không thể định vị Spring NamespaceHandler cho không gian tên lược đồ XML [http://www.springframework.org/schema/security]


179

Bất kỳ ý tưởng những gì có thể là nguyên nhân của điều này?

Không thể định vị Spring NamespaceHandler cho không gian tên lược đồ 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]

Đây là applicationContext.xml của tôi:

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

Trong tệp pom.xml của tôi, tôi có:

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

Tôi nhấn vào điều này khi làm theo hướng dẫn pizzashop mùa xuân
Rob Grant

Đây có phải là pom.xml hoàn chỉnh của bạn không? Bởi vì sau đó rất có thể bạn đang thiếu một cái lọ.
Marco Schoolenberg

Câu trả lời:


286

Tôi cần thêm một phụ thuộc Maven bổ sung:

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

3
+1 Để giải quyết vấn đề của tôi. Thông tin thêm có thể được tìm thấy về việc tái cấu trúc bộ mã bảo mật mùa xuân 3.0 tại: blog.springsource.com/2009/06/03/spring-security-300m1-release
Rydell

Liên kết tốt đẹp. Tôi có thể đã sử dụng nó một vài tháng trước là tốt.
Taylor Leese

12
Thịt xông khói được cứu bởi SO một lần nữa!
Andrew Swan

Giải pháp tương tự giữ khi cố gắng chỉ sử dụng spring-security-casbình.
Ryan Ransford

Tôi khuyên bạn nên liên kết này cho những người có Unable to locate Spring NamespaceHandler for XML schema namespace [xxxxx]vấn đề. Tôi đã có một vấn đề tương tự trong quá khứ, và điều đó đã giúp tôi rất nhiều!
Cotta

18

Tôi đã có thông báo lỗi tương tự trong khi cố gắng triển khai ứng dụng. Trong Spring, xml cấu hình bảo mật có thể là một cấu hình khác với applicationContext.xml, thường là applicationContext-security.xml trong thư mục WEB-INF. Các thay đổi được áp dụng là dành cho web.xml

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

Và applicationContext.xml sẽ trông như sau:

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

Ngay cả sau khi bạn thực hiện những thay đổi này, lỗi không gian tên sẽ tồn tại. Để loại bỏ điều này, hãy thêm các tệp jar sau vào WEB-INF / lib và sau đó vào thư viện:

  • 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

Bạn khá nhiều phải sử dụng Maven để có được mùa xuân. Và khi bạn miễn cưỡng làm điều đó, nó vẫn không hoạt động! Ai đó, ở đâu đó đang cười rất nhiều ... Câu trả lời này đã giúp tôi bớt bực bội một chút.
Arne Evertsson

12

Tôi đã vật lộn với điều này trong một thời gian và không có câu trả lời nào trong số này giúp được. Nhờ nhận xét từ user64141 tôi nhận ra rằng có vấn đề với các spring.handlerstập tin.

Tôi đang sử dụng plugin Shadow cho Maven để tạo một bình chứa chất béo và tất cả các tệp spring.handlers(và spring.schemas) đã bị ghi đè bởi mỗi phụ thuộc Spring.

Trang web Maven đề cập đến vấn đề chính xác này và cách giải quyết nó bằng cách nối các tệp lại với nhau:

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


8

Tôi đã sử dụng jar spring-security-config, nó đã giải quyết vấn đề cho tôi


6

Giải pháp chắc chắn là "spring-security-config" không có trong WEB-INF / lib của bạn.

Đối với dự án của tôi trong Eclipse sử dụng Maven, hóa ra không phải tất cả các phụ thuộc của maven đều được sao chép sang WEB-INF / lib. Nhìn vào Dự án -> Thuộc tính -> Hội triển khai, chỉ một số lọ được sao chép.

Để khắc phục điều này, tôi đã nhấp vào "Thêm", sau đó "Java Ent Path Entires" và cuối cùng là "Maven Dependencies".

Tôi đã tìm kiếm SO và web trong một giờ qua để tìm kiếm điều này, vì vậy hy vọng điều này sẽ giúp người khác.



3

@James Jithin - ngoại lệ như vậy cũng có thể xuất hiện khi bạn có hai phiên bản khác nhau của bean và lược đồ bảo mật trong xsi: lượcLocationLocation. Đó là trường hợp trong đoạn trích bạn đã dán:

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"

Trong trường hợp của tôi, việc thay đổi cả hai thành 3.1 đã giải quyết vấn đề


Tôi vừa mới quản lý để làm cho nó hoạt động với: http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/security/spring-security-3.2.xsd Trong trường hợp của tôi, tôi đã bị mất jar 'bảo mật mùa xuân-config'.
Ithar

Đồng ý với nhận xét này. Có vấn đề của tôi do nguyên nhân này.
Cá heo

2

Tôi đã làm gì:

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

hoạt động hoàn hảo. Thêm Baeldung


0

Nếu bạn đã có tất cả các phụ thuộc trong pom của mình, hãy thử:
1. Xóa tất cả các tệp đã tải xuống tạo thành thư mục kho lưu trữ maven của bạn cho 'org-> springframework'
2. Tạo một bản dựng sạch sẽ.


0

Tôi đã gặp vấn đề rất giống ngày hôm nay. Vì một số lý do, IntelliJ IDEAkhông bao gồm các tệp jar Spring Security trong khi triển khai ứng dụng. Tôi nghĩ rằng tôi nên đồng ý với phần lớn các áp phích ở đây.


0

Tôi đã gặp lỗi này khi triển khai lên Xử Nữ. Giải pháp là thêm phần này vào gói nhập khẩu của tôi:

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

Tôi nhận thấy trong các lọ Spring dưới META-INF, có một phần spring.schemas và spring.handlers và lớp mà chúng trỏ đến (trong trường hợp này là org.springframework.transaction.config.TxNamespaceHandler) phải được nhập.



0

Có cùng một vấn đề vài phút trước, tôi đã bỏ lỡ thư viện 'Maven depencendies' trong Hội triển khai của tôi. Tôi đã thêm nó thông qua phần 'Hội triển khai web' trong Eclipse


0

nếu việc thêm phụ thuộc không giải quyết được vấn đề của bạn, hãy tạo lại kho lưu trữ WAR. Trong trường hợp của tôi, tôi đã sử dụng tệp WAR lỗi thời mà không có các tệp bảo mật-web và bảo mật-conf


0

Thêm phụ thuộc sau vào tệp pom.xml của bạn và nếu bạn đang sử dụng IntelliJ thì hãy thêm các tệp tương tự vào thư mục WEB-INF-> lib .... đường dẫn là Cấu trúc dự án -> Atrifacts -> Chọn jar từ khung Element Elements có sẵn và nhân đôi nhấp chuột. Nó sẽ thêm vào thư mục tương ứng

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>3.0.1.RELEASE</version>
</dependency>
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.