2017-12-28 4 views
0

시작시 스프링 웹 응용 프로그램을 시작할 때 다음 오류가 발생합니다. 수코양이.클래스 네임 스페이스 [http://www.springframework.org/schema/batch]가 [org.springframework.beans.factory.xml.NamespaceHandler] 인터페이스를 구현하지 않음

기본적으로 beans.xml 파일이 처리 될 때 다음 클래스가 순서대로로드됩니다.

org.springframework.context.config.ContextNamespaceHandler는 URI http://www.springframework.org/schema/util

org.apache.cxf.jaxws.spring을 처리하는 URI를 http://www.springframework.org/schema/context

org.springframework.beans.factory.xml.UtilNamespaceHandler를 처리한다. NamespaceHandler가 URI를 URI http://cxf.apache.org/transports/http/configuration

org.sp을 처리 할 수 ​​http://cxf.apache.org/jaxws

org.apache.cxf.transport.http.spring.NamespaceHandler를 처리하는 URI를 처리 할 ringframework.batch.core.configuration.xml.CoreNamespaceHandler http://www.springframework.org/schema/batch

그러나 배치 URI에 대해 위의 마지막 클래스를로드 할 때 다음 예외가 발생합니다.

12/28/2017-11:21:47.070 - localhost-startStop-1 - ERROR [org.springframework.web.context.ContextLoader : Line 227]: Context initialization failed 
org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [beans.xml]; nested exception is org.springframework.beans.FatalBeanException: Class [org.springframework.batch.core.configuration.xml.CoreNamespaceHandler] for namespace [http://www.springframework.org/schema/batch] does not implement the [org.springframework.beans.factory.xml.NamespaceHandler] interface 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:412) 
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:334) 

나는 위의 모든 클래스의 소스로보고 그들 모두가 확장 발견 나는 클래스 패스에 항아리를 확인하고있다

org.springframework.beans.factory.xml.NamespaceHandler 

차례로 구현

org.springframework.beans.factory.xml.NamespaceHandlerSupport 

위의 클래스와 인터페이스를 각각의 예상 된 스프링 jar 파일에 포함하여 잘 보입니다.

어떻게 해결할 수 있습니까?

비슷한 질문이 여기에 있으며 나는 거기에 주어진 것을 시도했다.

Unexpected exception parsing XML document from class path resource [config/FaceBookSimulator.xml];

Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/batch]

내가 -verbose와 Tomcat을 다시 시작

업데이트 : 모든 클래스를 인쇄 할 수준의 옵션 형태 중 jar 파일을로드.

http://www.springframework.org/schema/batch=org.springframework.batch.core.configuration.xml.CoreNamespaceHandler 

DefaultNamespaceHandlerResolver은 (NamespaceHandler가를 구현) NamespaceHandlerSupport를 확장하지 않습니다

12/28/2017-15:01:18.251 - localhost-startStop-1 - DEBUG [org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver : Line 156]: Loaded NamespaceHandler mappings:{ 
http://www.springframework.org/schema/task=org.springframework.scheduling.config.TaskNamespaceHandler, 
http://www.springframework.org/schema/p=org.springframework.beans.factory.xml.SimplePropertyNamespaceHandler, 
http://cxf.apache.org/transports/http-jetty/configuration=org.apache.cxf.transport.http_jetty.spring.NamespaceHandler, 
http://www.w3.org/2006/07/ws-policy=org.apache.cxf.ws.policy.spring.PolicyNamespaceHandler, 
http://www.springframework.org/schema/lang=org.springframework.scripting.config.LangNamespaceHandler, 
http://www.springframework.org/schema/util=org.springframework.beans.factory.xml.UtilNamespaceHandler, 
http://cxf.apache.org/jaxws=org.apache.cxf.jaxws.spring.NamespaceHandler, 
http://cxf.apache.org/policy=org.apache.cxf.ws.policy.spring.NamespaceHandler, 
http://www.springframework.org/schema/jee=org.springframework.ejb.config.JeeNamespaceHandler, 
http://cxf.apache.org/transports/jms=org.apache.cxf.transport.jms.spring.NamespaceHandler, 
http://cxf.apache.org/transports/http/configuration=org.apache.cxf.transport.http.spring.NamespaceHandler, 
http://www.springframework.org/schema/tx=org.springframework.transaction.config.TxNamespaceHandler, 
http://cxf.apache.org/bindings/object=org.apache.cxf.binding.object.spring.NamespaceHandler, 
http://cxf.apache.org/ws/addressing=org.apache.cxf.ws.addressing.spring.NamespaceHandler, 
http://cxf.apache.org/clustering=org.apache.cxf.clustering.spring.NamespaceHandler, 
http://cxf.apache.org/simple=org.apache.cxf.frontend.spring.NamespaceHandler, 
http://www.springframework.org/schema/aop=org.springframework.aop.config.AopNamespaceHandler, 
http://www.springframework.org/schema/context=org.springframework.context.config.ContextNamespaceHandler, 
http://cxf.apache.org/core=org.apache.cxf.bus.spring.NamespaceHandler, 
http://cxf.apache.org/jaxrs=org.apache.cxf.jaxrs.spring.NamespaceHandler, 
http://cxf.apache.org/binding/coloc=org.apache.cxf.binding.coloc.spring.NamespaceHandler, 
http://schemas.xmlsoap.org/ws/2004/09/policy=org.apache.cxf.ws.policy.spring.PolicyNamespaceHandler, 
http://www.springframework.org/schema/jms=org.springframework.jms.config.JmsNamespaceHandler, 
http://www.springframework.org/schema/batch=org.springframework.batch.core.configuration.xml.CoreNamespaceHandler, 
http://www.w3.org/ns/ws-policy=org.apache.cxf.ws.policy.spring.PolicyNamespaceHandler, 
http://cxf.apache.org/ws/rm/manager=org.apache.cxf.ws.rm.spring.NamespaceHandler, 
http://cxf.apache.org/bindings/soap=org.apache.cxf.binding.soap.spring.NamespaceHandler 
} 

클래스

org.springframework.beans.factory.xml.DefaultNamespaceHandlerResolver 

처리입니다 : 그리고 난 다음 발견했다.

발견 한 것이 맞으면 어떻게 해결할 수 있습니까?

+0

대부분 클래스 로더 계층 구조 문제가 있습니다. 실패한 클래스가 인터페이스를로드 한 클래스 로더와 다른 클래스 로더에 의해로드되고 있습니다. –

+0

짐, 업데이트를 추가했습니다. 한번보세요. – Harsha

답변

0

내 응용 프로그램이 서버 lib 디렉토리의 공유 jar 파일을 사용하고있었습니다. 끝으로 많은 병이 있습니다. 서비스 사이드 jar 파일을 정리해야했습니다. 그러나 가장 빠른 해결책은 WAR 파일의 WEB-INF/lib 내에 필요한 jar를 패키지하는 것이 었습니다.

관련 문제