복붙노트

[SPRING] cvc-elt.1 : 'beans'요소의 선언을 찾을 수 없습니다.

SPRING

cvc-elt.1 : 'beans'요소의 선언을 찾을 수 없습니다.

스프링 보안을 사용하여 사용자 로그인 기능을 인증하는 bean 객체를 얻으려고합니다.

    ApplicationContext context = new ClassPathXmlApplicationContext(
            "com/humandevice/drive/fx/util/applicationContext.xml");
    authenticationManager = (AuthenticationManager) context
            .getBean("authenticationManager");

내 applicationContext.xml은 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<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.xsd
       http://www.springframework.org/schema/security
       http://www.springframework.org/schema/security/spring-security-3.2.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context.xsd"
xmlns:context="http://www.springframework.org/schema/context">
<context:component-scan base-package="com.humandevice.drive.fx">
    <context:include-filter type="regex"
        expression="com.humandevice.drive.fx.*" />
</context:component-scan>
<bean id="LoginController" alias="loginController" class="controller.LoginController">
    <property name="authenticationManager" ref="authenticationManager" />
    <property name="applicationContext" ref="applicationContext" />
</bean>
<bean id="applicationContext" alias="applicationContext"
    class="org.springframework.context.ApplicationContext;">
</bean>
<authentication-manager alias="authenticationManager">
    <authentication-provider user-service-ref="userService">
        <password-encoder ref="bCryptPasswordEncoder" />
    </authentication-provider>
</authentication-manager>
 </beans>

그러나 나는이 예외를 얻는다 :

Caused by: org.xml.sax.SAXParseException; lineNumber: 9; columnNumber: 64; cvc-elt.1: Cannot find the declaration of element 'beans'.

문제를 이해하는 데 어려움을 겪고 있습니다.

최신 정보

나는 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" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:task="http://www.springframework.org/schema/task"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
        http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd">

    <import resource="/context-service.xml" />
    <import resource="/context-repository.xml" />

    <context:component-scan base-package="com.humandevice.drive.fx"></context:component-scan>

    <authentication-manager>
        <authentication-provider user-service-ref="com.humandevice.drive.service.user.IUserService">
            <password-encoder ref="bCryptPasswordEncoder" />
        </authentication-provider>
    </authentication-manager>
</beans:beans>

이제이 예외가 발생합니다.

lineNumber : 11; columnNumber : 44; cvc-complex-type.2.4.c : 일치하는 와일드 카드가 엄격하지만 'import'요소에 대한 선언을 찾을 수 없습니다.

해결법

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

    1.기본 네임 스페이스는 http://www.springframework.org/schema/security이며 xmlns : beans = "http://www.springframework.org/schema/beans"를 구성했습니다. 즉 접두사 beans : to를 추가해야합니다. 모든 태그 양식은 http://www.springframework.org/schema/beans이므로 XML은 다음과 같아야합니다.

    기본 네임 스페이스는 http://www.springframework.org/schema/security이며 xmlns : beans = "http://www.springframework.org/schema/beans"를 구성했습니다. 즉 접두사 beans : to를 추가해야합니다. 모든 태그 양식은 http://www.springframework.org/schema/beans이므로 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.xsd
           http://www.springframework.org/schema/security
           http://www.springframework.org/schema/security/spring-security-3.2.xsd
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd"
           xmlns:context="http://www.springframework.org/schema/context">
        <context:component-scan base-package="com.humandevice.drive.fx">
            <context:include-filter type="regex"
                                    expression="com.humandevice.drive.fx.*" />
        </context:component-scan>
        <beans:bean id="LoginController" alias="loginController" class="controller.LoginController">
            <beans:property name="authenticationManager" ref="authenticationManager" />
            <beans:property name="applicationContext" ref="applicationContext" />
        </beans:bean>
        <beans:bean id="applicationContext" alias="applicationContext"
              class="org.springframework.context.ApplicationContext;">
        </beans:bean>
        <authentication-manager alias="authenticationManager">
            <authentication-provider user-service-ref="userService">
                <password-encoder ref="bCryptPasswordEncoder" />
            </authentication-provider>
        </authentication-manager>
    </beans:beans>
    
  2. ==============================

    2.이 코드는 도움이 될 것입니다.

    이 코드는 도움이 될 것입니다.

    <?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:context="http://www.springframework.org/schema/context" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation="
    http://www.springframework.org/schema/beans 
    classpath:/org/springframework/beans/factory/xml/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    classpath:/org/springframework/context/config/spring-context-3.0.xsd
    http://www.springframework.org/schema/aop 
    classpath:/org/springframework/aop/config/spring-aop-3.0.xsd
    ">      
    </beans>
    
  3. ==============================

    3.나는 XML 파일을 잘라내어 같은 위치에 붙여 넣기 만하면된다.

    나는 XML 파일을 잘라내어 같은 위치에 붙여 넣기 만하면된다.

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

    4.어떻게 든 applicationContext.xml에 대한 변경 사항은 클래스 경로에서 업데이트되지 않았습니다. 그래서 수동으로 classpath에서 applicationContext.xml 파일을 삭제하고 내 문제를 해결 한 응용 프로그램을 다시 빌드했습니다.

    어떻게 든 applicationContext.xml에 대한 변경 사항은 클래스 경로에서 업데이트되지 않았습니다. 그래서 수동으로 classpath에서 applicationContext.xml 파일을 삭제하고 내 문제를 해결 한 응용 프로그램을 다시 빌드했습니다.

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

    5.나는 왜 이런 이상한 행동을하는지 완전히 모릅니다. 나는 또한 같은 예외를 직면하고 Karthikeyan Vaithilingam가 권고 한 것을 따랐다. 그러나 여전히 문제는 해결되지 않습니다. 그래서 필자는 파일을 저장하고 저장 한 내용을 되돌 렸습니다. 비올라!! 예외는 사라졌으며 이제는 오류가 없습니다.

    나는 왜 이런 이상한 행동을하는지 완전히 모릅니다. 나는 또한 같은 예외를 직면하고 Karthikeyan Vaithilingam가 권고 한 것을 따랐다. 그러나 여전히 문제는 해결되지 않습니다. 그래서 필자는 파일을 저장하고 저장 한 내용을 되돌 렸습니다. 비올라!! 예외는 사라졌으며 이제는 오류가 없습니다.

  6. from https://stackoverflow.com/questions/27420395/cvc-elt-1-cannot-find-the-declaration-of-element-beans by cc-by-sa and MIT license