grails cxf BeanCreationException [英] grails cxf BeanCreationException

查看:352
本文介绍了grails cxf BeanCreationException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用grails cxf-Plugin,它在本地工作正常,但是当我将它部署到tomcat服务器时,  ERROR context.GrailsContextLoaderListener  - 初始化应用程序时出错:创建名为'cxf'的bean时出错:
bean的实例化失败;嵌套异常是
org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.apache.cxf.bus.spring.SpringBus]:
构造函数抛出异常;嵌套异常是org.apache.cxf.bus.extension.ExtensionException:无法加载扩展类org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl。
org.springframework.beans.factory.BeanCreationException:创建名为'cxf'的bean时出错:bean实例化失败;嵌套异常是org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.apache.cxf.bus.spring.SpringBus]:构造函数抛出异常;嵌套异常是org.apache.cxf.bus.extension.ExtensionException:无法加载扩展类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)$ java.util.concurrent.ThreadPoolExecutor
$ Worker.run(ThreadPoolExecutor.java:615)$ b $ at java.lang.Thread.run (Thread.java:745)
导致:org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.apache.cxf.bus.spring.SpringBus]:构造函数抛出异常;嵌套异常是org.apache.cxf.bus.extension.ExtensionException:无法加载扩展类org.apache.cxf.ws.policy.AssertionBuilderRegistryImpl。
... 5 more
导致:org.apache.cxf.bus.extension.ExtensionException:无法加载扩展类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
导致:java.lang.IncompatibleClassChangeError:在java.lang.ClassLoader.defineClass中实现类
(ClassLoader.java: 800)$ java.util.SecureClassLoader.defineClass中的
(SecureClassLoader.java:142)java.lang.ClassLoader.defineClass中的
(ClassLoader.java:800)$ java.security.SecureClassLoader中的
.defineClass(SecureClassLoader.java:142)$ or $
at org.apache.cxf.bus.extension.Extension.tryClass(Extension.java:1 64)
... 10 more

这里是我的BuildConfig的片段:

  compile:ws-client:1.0
compile:cxf-client:2.1.1
编译:cxf:2.1.1

我用构建一个war文件, grails war 并将它部署在Tomcat服务器上
我已经检查了Tomcat服务器上项目的 WEB-INF / lib 文件夹并有jar的:

  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服务器上收到此错误?

解决方案

我遇到同样的问题,我花了相当长的时间弄清楚了。有些人也在SO上发布了这个问题:

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

could-not-load-extension-class-org-apache-cxf-ws- assertionBuilderRegistry加载失败,因为它是一个接口并扩展了AssertionBuilderFactory,而在早期版本的neethi库中,AssertionBuilderFactory被定义为一个具体类。因此会引发IncompatibleClassChangeError。



关于IncompatibleClassChangeError的原因:
$ b
what-c​​auses-java-lang-incompatibleclasschangeerror



总之,你需要升级neethi库版本。


I'm using the grails cxf-Plugin and it works fine locally, but I get an Erro when i deploy it on an tomcat server:

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

here is a snippet of my BuildConfig:

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

I build a war file with grails war and deploy it on an Tomcat Server I have checked the WEB-INF/lib folder of the Project on the Tomcat Server and there are the jar's:

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

Why do I get this Error on the Tomcat Server?

解决方案

I had the same issue and I spent quite some time to figure it out. Some people also posted this issue on SO:

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

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

AssertionBuilderRegistry Loading failed because it is an interface and extends AssertionBuilderFactory, while in older version of neethi library, AssertionBuilderFactory is defined as a concrete class. Thus IncompatibleClassChangeError is thrown.

About reasons for IncompatibleClassChangeError :

what-causes-java-lang-incompatibleclasschangeerror

In conclusion, you need to upgrade neethi library version.

这篇关于grails cxf BeanCreationException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆