天天看点

nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type

在使用cglib进行动态代理时,很可能会出现下面的异常:

当这种异常出现时,可能从下面几个方法查找问题。

1、asm包有没有导入

由于cglib动态代理需要使用asm反射包,所以,如果没有导入asm就会出现org.objectweb.asm.Type类找不到的问题,导入asm包就可以了。

nested exception is java.lang.NoClassDefFoundError: org/objectweb/asm/Type

2、asm包冲突

排除项目中不需要的asm包

3、cglib包与asm包版本不兼容

总结:

针对上面的可能出现的一些问题,有一些可以通过下面的方式避免。

由于cglib需要用到asm,所以引入cglib包时,必须要引入asm包,而且版本需要兼容。这样就很容易出现问题,好在cglib开发者帮我们想到了这个问题,于是,有了cglib-nodep.jar,这个自身包含了asm,所以,引入cglib-nodep后,就不需要再引asm了。

继续阅读