CXF jar包冲突之asm

场景:一个web项目,用了SSH框架,在选择webservice的时候选择了CXF

问题:项目启动时关键报错信息如下:

 

Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(I)V

at net.sf.cglib.core.DebuggingClassWriter.<init>(DebuggingClassWriter.java:47)

at net.sf.cglib.core.DefaultGeneratorStrategy.getClassWriter(DefaultGeneratorStrategy.java:30)

at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:24)

at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)

at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:144)

at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:116)

at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)

at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)

分析:项目中用到spring和hibernate,这两个框架都有需要cglib,但是cglib实际上就是封装了asm;cxf本身也有asm的依赖,异常信息正是由于cglib和cxf的asm版本冲突所致。

 

解决办法:

在引入cxf版本依赖的时候排除asm的依赖。

 

       <dependency>

            <groupId>org.apache.cxf</groupId>

            <artifactId>cxf-rt-frontend-jaxws</artifactId>

            <version>2.2.3</version>

            <exclusions>

                <exclusion>

                    <groupId>asm</groupId>

                    <artifactId>asm</artifactId>

                </exclusion>

            </exclusions>

        </dependency>

        <dependency>

            <groupId>org.apache.cxf</groupId>

            <artifactId>cxf-rt-transports-http</artifactId>

            <version>2.2.3</version>

        </dependency>

 

你可能感兴趣的:(jar包)