복붙노트

[SPRING] 일치하는 와일드 카드는 엄격하지만 요소의 컨텍스트에 대한 선언을 찾을 수 없습니다. component-scan

SPRING

일치하는 와일드 카드는 엄격하지만 요소의 컨텍스트에 대한 선언을 찾을 수 없습니다. component-scan

첫 번째 봄 프로젝트를 시도하는 동안 다음과 같은 오류가 발생합니다.

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

다음은 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>

오류의 원인은 무엇입니까?

해결법

  1. ==============================

    1.컨텍스트 네임 스페이스의 스키마 위치를 지정하지 않았습니다. 이것이이 특정 오류의 원인입니다.

    컨텍스트 네임 스페이스의 스키마 위치를 지정하지 않았습니다. 이것이이 특정 오류의 원인입니다.

    <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">
    
  2. ==============================

    2.스키마 위치의 경로가 잘못되었습니다.

    스키마 위치의 경로가 잘못되었습니다.

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

    올바른 경로는 /로 끝나야합니다.

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

    3.문제가 발생했습니다.

    문제가 발생했습니다.

    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'
    

    나에게 spring-security-config jar를 classpath에 추가해야했다.

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

    편집하다:

    pom에 올바른 의존성이있을 수 있습니다.

    그러나...

    여러개의 스프링 의존성을 사용하고 하나의 jar로 어셈블하는 경우 META-INF / spring.schemas는 다른 스프링 의존성의 spring.schemas에 의해 덮어 쓰여지고있을 것입니다.

    (조립 된 항아리에서 그 파일을 추출하면 이해할 수 있습니다)

    스프링 스키마는 다음과 같은 줄의 묶음 일뿐입니다.

    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
    

    그러나 다른 종속성이 해당 파일을 덮어 쓰면 정의가 http에서 검색되고 방화벽 / 프록시가 있으면 그 파일을 가져올 수 없습니다.

    한 가지 해결책은 spring.schemas와 spring.handlers를 단일 파일에 추가하는 것입니다.

    검사:

    Spring jandlers / spring.schemas가 하나의 항아리에 여러 개의 스프링 종속성을 병합 할 때 덮어 쓰지 않도록하는 아이디어

  4. ==============================

    4.이 오류는 필요한 XSD가 들어있는 jar 파일이 전개 된 클래스 경로에 포함되지 않은 경우에도 발생할 수 있습니다.

    이 오류는 필요한 XSD가 들어있는 jar 파일이 전개 된 클래스 경로에 포함되지 않은 경우에도 발생할 수 있습니다.

    컨테이너에서 종속성을 사용할 수 있는지 확인하십시오.

  5. ==============================

    5.STS를 사용하는 경우 Eclipse에서 구성 파일을 "Bean 구성"파일로 표시 할 수 있습니다 (XML 파일을 만들거나 마우스 오른쪽 단추로 클릭 할 때 지정할 수 있음).

    STS를 사용하는 경우 Eclipse에서 구성 파일을 "Bean 구성"파일로 표시 할 수 있습니다 (XML 파일을 만들거나 마우스 오른쪽 단추로 클릭 할 때 지정할 수 있음).

    프로젝트는 Spring Nature를 가져야합니다 (예 : maven 프로젝트를 마우스 오른쪽 버튼으로 클릭).

    springconfig는 기본적으로 spring.xml이 열린다.

    이 편집기에는 네임 스페이스 탭이 있습니다.

    네임 스페이스를 지정할 수 있습니다.

    의존성에 의존한다는 점을 명심하십시오 (maven 프로젝트 사용). 따라서 spring-tx가 maven의 pom.xml에 정의되어 있지 않으면 옵션이 없으므로 가질 수 없습니다. 일치하는 와일드 카드는 엄격하지만 선언은 할 수 없습니다 'tx : annotation-driven' '컨텍스트 : 구성 요소 스캔'요소에서 발견되었습니다.

  6. ==============================

    6.너무 늦었지만 다른 사람들에게 어느 정도 유용 할 수 있습니다.

    너무 늦었지만 다른 사람들에게 어느 정도 유용 할 수 있습니다.

    어떤 의미의 선언이나 XML에서 발견 할 수없는 선언을 놓쳤다는 의미입니다.

    내 경우에는 다음을 추가하는 것을 잊었다.

    추가 후 문제가 사라졌습니다.

    <?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">
    
  7. ==============================

    7.컨텍스트를 추가 할 때 : xml에서 처음으로 구성 요소 검색을 수행하려면 다음을 추가해야합니다.

    컨텍스트를 추가 할 때 : xml에서 처음으로 구성 요소 검색을 수행하려면 다음을 추가해야합니다.

    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">
    
  8. ==============================

    8.올바른 경로는 "/"로 끝나지 않아야합니다. 문제가 발생한 것은 잘못되었습니다.

    올바른 경로는 "/"로 끝나지 않아야합니다. 문제가 발생한 것은 잘못되었습니다.

    옳은 방법 :

    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd

  9. ==============================

    9.네임 스페이스 선언 및 스키마 위치를 사용하면 네임 스페이스의 구문을 확인할 수도 있습니다 (예 : -

    네임 스페이스 선언 및 스키마 위치를 사용하면 네임 스페이스의 구문을 확인할 수도 있습니다 (예 : -

    <beans xmlns:context="http://www.springframework.org/schema/context"
            xsi:schemaLocation= http://www.springframework.org/`enter code here`schema/context
            http://www.springframework.org/schema/context/spring-context.xsd">
    
    <context:annotation-driven/>   <!-- This is wrong -->
    <context:annotation-config/> <!-- This should work -->
    
  10. from https://stackoverflow.com/questions/13589470/the-matching-wildcard-is-strict-but-no-declaration-can-be-found-for-element-co by cc-by-sa and MIT license