2012-11-27 21 views
50

Tôi nhận được các lỗi sau đây trong khi cố gắng dự án mùa xuân đầu tiên của tôi:Các ký tự đại diện phù hợp là nghiêm ngặt, nhưng không có tuyên bố có thể được tìm thấy cho yếu tố 'bối cảnh: thành phần quét

Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'context:component-scan 

Đây là applicationContext.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:p="http://www.springframework.org/schema/p" 
     xmlns:aop="http://www.springframework.org/schema/aop" 
     xmlns:tx="http://www.springframework.org/schema/tx" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"> 

     <context:component-scan base-package="com.xyz" /> 

</beans> 

Điều gì gây ra lỗi?

Trả lời

114

Bạn chưa xác định vị trí schema của namespace bối cảnh, đó là lý do cho lỗi cụ thể này:

<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-2.5.xsd 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop-2.5.xsd 
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd"> 
+1

Vấn đề của tôi là tôi đã chỉ định * sai * vị trí lược đồ.Kiểm tra kỹ hơn hoặc sao chép/dán từ đây. – vadipp

+0

Lỗi bị biến mất CHỈ khi đặt "xmlns: context" hiện tại ngay trước thông số "xsi: schemaLocation". Thanx cho đề xuất. – tjm1706

3

Tôi đã gặp vấn đề với

Caused by: org.xml.sax.SAXParseException: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'security:http' 

và cho tôi, tôi đã phải thêm bình spring-security-config vào đường dẫn lớp

http://docs.spring.io/spring-security/site/docs/3.1.x/reference/ns-config.html

EDIT:

Nó có thể là bạn có sự phụ thuộc chính xác trong pom của bạn.

Nhưng ...

Nếu bạn đang sử dụng nhiều phụ thuộc vào mùa xuân và lắp ráp thành một jar đơn thì META-INF/spring.schemas có lẽ được ghi đè bởi spring.schemas của người khác phụ thuộc vào mùa xuân của bạn.

(Giải nén tập tin đó từ jar lắp ráp của bạn và bạn sẽ hiểu)

schemas mùa xuân chỉ là một loạt các dòng mà trông như thế này:

http\://www.springframework.org/schema/p=org.springframework.beans.factory.xml.SimplePropertyNamespaceHandler 
http\://www.springframework.org/schema/beans/spring-beans-3.0.xsd=org/springframework/beans/factory/xml/spring-beans-3.0.xsd 

Nhưng nếu phụ thuộc khác ghi đè tập tin đó, sau đó định nghĩa sẽ được lấy từ http, và nếu bạn có tường lửa/proxy, nó sẽ không nhận được nó.

Một giải pháp là nối spring.schemas và spring.handlers vào một tệp duy nhất.

Kiểm tra:

Idea to avoid that spring.handlers/spring.schemas get overwritten when merging multiple spring dependencies in a single jar

+0

Loại này giúp tôi xác định vấn đề tôi đang gặp phải. Tôi đã bỏ lỡ việc thêm phụ thuộc 'spring-web' vào pom –

+0

Ngoài ra, hãy đảm bảo rằng nếu bạn chỉ định một phiên bản cụ thể của lược đồ Spring trong tiêu đề xsi: schemaLocation, khớp với (các) phiên bản của lược đồ đó được liệt kê trong spring.schemas tệp và được gói trong jar Spring đó. –

+0

Tôi có cùng một vấn đề liên quan đến bảo mật http. Nguyên nhân gốc rễ là một thiếu cấu hình spring-security-config. thêm jar này làm phụ thuộc thời gian biên dịch maven đã giải quyết vấn đề cho tôi. – nirmalsingh

3

Lỗi này cũng có thể được gây ra nếu file jar có chứa XSD bạn yêu cầu không được bao gồm trong đường dẫn lớp triển khai của bạn.

Đảm bảo phụ thuộc có sẵn trong vùng chứa của bạn.

+0

Tôi gặp sự cố liên quan đến bảo mật http được giải thích ở trên trong câu trả lời của David. Nguyên nhân gốc rễ là một thiếu cấu hình spring-security-config. thêm jar này làm phụ thuộc thời gian biên dịch maven đã giải quyết vấn đề cho tôi. – nirmalsingh

2

Nếu sử dụng STS, bạn có thể trong Eclipse đánh dấu các tập tin cấu hình là "Bean Cấu hình" tập tin (bạn có thể chỉ định khi tạo hoặc nhấp chuột phải vào một tập tin XML):

Spring Tools > Add as Bean Configuration

Bạn dự án đã có mùa xuân thiên nhiên (nhấp chuột phải vào dự án maven ví dụ):

Spring Tools > Add Spring Project Nature

sau đó spring.xml được mở ra theo mặc định với mùa xuân Config Edi tor

Open With > Spring Config Editor

và trình soạn thảo này có tab Namespaces

Spring Config Editor - Namespaces tab

nào cho phép bạn xác định không gian tên:

Spring Config Editor - Namespaces example

Xin lưu ý, rằng nó phụ thuộc vào phụ thuộc (sử dụng dự án maven), vì vậy nếu spring-tx không được định nghĩa trong pom.xml maven của, tùy chọn là không có, mà ngăn cản bạn có The matching wildcard is strict, but no declaration can be found for element 'tx:annotation-driven' 'context:component-scan' vấn đề ...

5

này con đường của địa điểm schema là sai:

http://www.springframework.org/schema/beans 

Con đường đúng nên kết thúc với /:

http://www.springframework.org/schema/beans/ 
+0

Tôi không chắc chắn điều này là đúng sự thật. – rslj

1

Đó là quá muộn nhưng hơi may có ích cho người khác

The matching wildcard is strict, but no declaration can be found for element 'context:component-scan

có nghĩa là bạn đã nhỡ một số khai báo hay The buộc khai báo Not Found trong XML của bạn

Trong trường hợp của tôi tôi quên để thêm follwoing

Sau Thêm này Vấn đề Cuốn đi

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/mvc" 
    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" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd 
     http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
     http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd"> 
1

khi bạn thêm bối cảnh: thành phần quét lần đầu tiên trong một xml, nhu cầu sau đây để được thêm .

xmlns:context="http://www.springframework.org/schema/context" 

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd 
     http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> 
Các vấn đề liên quan