junit,powermock单元测试时问题java.lang.ClassFormatError: Invalid length nnn in LocalVariableTable in class

今天采用junit和powermock的时候一直报如下错误

java.lang.ClassFormatError: Invalid length nnn in LocalVariableTable in class

很奇怪的是只写两个@test方法的时候就是好的,多添加一个就回报错,于是在网上查找,最后发现是javassists3.11.0GA的问题,采用别的包就好

javassists3.11.0GA这个jar是一个有问题的版本

为了定位此问题采用eclipse查看一下依赖树,去除了引用此版本的javassists3.11.0GA.jar依赖后,成功


javassist简介

Javassist是一个开源的分析、编辑和创建Java字节码的类库。是由东京工业大学的数学和计算机科学系的 Shigeru Chiba (千叶 滋)所创建的。它已加入了开放源代码JBoss 应用服务器项目,通过使用Javassist对字节码操作为JBoss实现动态AOP框架。
关于java字节码的处理,目前有很多工具,如bcel,asm。不过这些都需要直接跟虚拟机指令打交道。如果你不想了解虚拟机指令,可以采用javassist。javassist是jboss的一个子项目,其主要的优点,在于简单,而且快速。直接使用java编码的形式,而不需要了解虚拟机指令,就能动态改变类的结构,或者动态生成类。


你可能感兴趣的:(JAVA)