2017-12-28 16 views
0

私は起動時に次のエラーが表示されます。 Tomcat。クラスの名前空間[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 http://cxf.apache.org/jaxws

を処理するorg.apache.cxf.transport.http.spring.NamespaceHandler URI http://cxf.apache.org/transports/http/configuration

org.spを処理するために、 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) 

私は上記のすべてのクラスのソースに見て、それらのすべてが、私はクラスパスにjarファイルをチェックした順番に

org.springframework.beans.factory.xml.NamespaceHandler 

を実装

org.springframework.beans.factory.xml.NamespaceHandlerSupport 

を延長することを発見し、上記のクラスとインタフェースを、それぞれの期待されるspring 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ファイルをロードされています。そして、私が見つけた次

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 

は処理です:

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

DefaultNamespaceHandlerResolverは(NamespaceHandlerを実装)NamespaceHandlerSupportを拡張しません。

検出結果が正しい場合、これを解決するにはどうすればよいですか?

+0

ほとんどの場合、クラスローダー階層の問題があります。失敗したクラスは、インターフェースをロードしたクラスローダーとは異なるクラスローダーによってロードされています。 –

+0

ジム、アップデートを追加しました。どうぞご覧ください。 – Harsha

答えて

0

私のアプリケーションは、サーバーlibディレクトリの共有jarファイルに依存していました。上には多くの瓶があります。サービスサイドのjarファイルを整理する必要がありました。しかし、最も簡単な解決策は、必要なjarをWARファイルのWEB-INF/lib内にパッケージ化することでした。

関連する問題