`
scholers
  • 浏览: 614850 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Ant + Junit+ cobertura 单元测试覆盖率问题

阅读更多
   在用Ant + Junit+ cobertura 编译执行代码做单元测试覆盖率的时候
出现如下错误:
Invalid method Code length 68617 in class file .././././.BaseDCTRSSTATable

java.lang.ClassFormatError: Invalid method Code length 68617 in class file .././././.BaseDCTRSSTATable
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(Unknown Source)
at java.security.SecureClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at 

  
字面意思是说方法长度无效,本来java虚拟机规范中有规定:方法个数,参数个数,域个数 都有 64k 的限制。
   BaseDCTRSSTATable.java源码超过6千行,但是我对比了下编译生成的class文件,BaseDCTRSSTATable本身没有超过64K,既然本身没有超过64K,那么里面也不可能有方法或者参数超过64K了,但是cobertura 执行的时候,载入class到instrument目录时,BaseDCTRSSTATable文件变大了变成了超过140K,这就不知道为啥了。后来没办法,修改了这个类,拆分了几个方法,才解决了问题。
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics