2015-09-25 105 views
0

我使用的Grails的CXF-插件,它工作正常在本地,但我得到一個埃羅當我的Tomcat服務器上部署它:Grails的CXF BeanCreationException

ERROR context.GrailsContextLoaderListener - Error initializing the application: Error creating bean with name 'cxf': 
Instantiation of bean failed; nested exception is 
org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.bus.spring.SpringBus]: 
Constructor threw exception; nested exception is org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl. 
     org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cxf': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.bus.spring.SpringBus]: Constructor threw exception; nested exception is org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl. 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 
at java.util.concurrent.FutureTask.run(FutureTask.java:262) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.bus.spring.SpringBus]: Constructor threw exception; nested exception is org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl. 
... 5 more 
Caused by: org.apache.cxf.bus.extension.ExtensionException: Could not load extension class org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl. 
     at org.apache.cxf.bus.extension.Extension.tryClass(Extension.java:183) 
at org.apache.cxf.bus.extension.Extension.getClassObject(Extension.java:199) 
at org.apache.cxf.bus.extension.ExtensionManagerImpl.activateAllByType(ExtensionManagerImpl.java:144) 
at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:180) 
at org.apache.cxf.bus.extension.ExtensionManagerBus.<init>(ExtensionManagerBus.java:192) 
at org.apache.cxf.bus.spring.SpringBus.<init>(SpringBus.java:45) 
... 5 more 
Caused by: java.lang.IncompatibleClassChangeError: Implementing class 
at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:800) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at org.apache.cxf.bus.extension.Extension.tryClass(Extension.java:164) 
... 10 more 

這裏是我的BuildConfig的一個片段:

compile ":ws-client:1.0" 
    compile ":cxf-client:2.1.1" 
    compile ":cxf:2.1.1" 

我建一個戰爭文件,grails war和Tomcat服務器上部署 我已經檢查了項目的Tomcat服務器上的文件夾WEB-INF/lib和有罐子的:

cxf-bundle-2.2.4.jar 
cxf-core-3.0.4.jar 
cxf-rt-bindings-soap-3.0.4.jar 
cxf-rt-bindings-xml-3.0.4.jar 
cxf-rt-databinding-jaxb-3.0.4.jar 
cxf-rt-frontend-jaxrs-3.0.4.jar 
cxf-rt-frontend-jaxws-3.0.4.jar 
cxf-rt-frontend-simple-3.0.4.jar 
cxf-rt-security-3.0.4.jar 
cxf-rt-transports-http-3.0.4.jar 
cxf-rt-ws-addr-3.0.4.jar 
cxf-rt-wsdl-3.0.4.jar 
cxf-rt-ws-policy-3.0.4.jar 
cxf-rt-ws-security-3.0.4.jar 
cxf-tools-common-3.0.4.jar 
cxf-tools-validator-3.0.4.jar 
cxf-tools-wsdlto-core-3.0.4.jar 
cxf-tools-wsdlto-databinding-jaxb-3.0.4.jar 
cxf-tools-wsdlto-frontend-jaxws-3.0.4.jar 

爲什麼在Tomcat服務器上出現此錯誤?

回答

1

我有同樣的問題,我花了相當長的時間弄清楚。有些人還張貼在SO這個問題:

cxf-failing-with-incompatibleclasschangeerror-exception-on-unit-test

could-not-load-extension-class-org-apache-cxf-ws-policy-assertionbuilderregistry

AssertionBuilderRegistry加載失敗,因爲它是一個接口和擴展AssertionBuilderFactory,而在舊版本neethi庫,AssertionBuilderFactory被定義爲一個具體的類。因此引發了IncompatibleClassChangeError。

關於原因IncompatibleClassChangeError:

what-causes-java-lang-incompatibleclasschangeerror

總之,你需要升級neethi庫版本。

+0

我仍然無法解決這個問題,將neethi庫文件版本升級到3.0.3並沒有幫助。 – YAT

相關問題