java.lang.RuntimeException : java. lang.ClassNotFoundException : <org. objectweb.asm.ClassWriter.getCommonSuperClass(未知来源)>

标签 java java-7 cobertura

我得到以下新的异常 cobertura (2.0.2..) .我想这与在新 block 中立即创建新对象有某种关系。

WARN   instrumentClass, Unable to instrument file c:\apps\ijprojects\TrickyInstrument\out\production\TrickyInstrument\InstrumentationFailsOnFirstNewClassInTryBlock.class
java.lang.RuntimeException: java.lang.ClassNotFoundException: DataAccess
        at org.objectweb.asm.ClassWriter.getCommonSuperClass(Unknown Source)
        at org.objectweb.asm.ClassWriter.a(Unknown Source)
        at org.objectweb.asm.Frame.a(Unknown Source)
        at org.objectweb.asm.Frame.a(Unknown Source)
        at org.objectweb.asm.MethodWriter.visitMaxs(Unknown Source)
        at org.objectweb.asm.MethodVisitor.visitMaxs(Unknown Source)
        at org.objectweb.asm.util.CheckMethodAdapter.visitMaxs(Unknown Source)
        at org.objectweb.asm.MethodVisitor.visitMaxs(Unknown Source)
        at org.objectweb.asm.commons.LocalVariablesSorter.visitMaxs(Unknown Source)
        at org.objectweb.asm.tree.MethodNode.accept(Unknown Source)
        at org.objectweb.asm.util.CheckMethodAdapter$1.visitEnd(Unknown Source)
        at org.objectweb.asm.MethodVisitor.visitEnd(Unknown Source)
        at org.objectweb.asm.util.CheckMethodAdapter.visitEnd(Unknown Source)
        at org.objectweb.asm.ClassReader.b(Unknown Source)
        at org.objectweb.asm.ClassReader.accept(Unknown Source)
        at org.objectweb.asm.ClassReader.accept(Unknown Source)
        at net.sourceforge.cobertura.instrument.CoberturaInstrumenter.instrumentClass(CoberturaInstrumenter.java:204)
        at net.sourceforge.cobertura.instrument.CoberturaInstrumenter.instrumentClass(CoberturaInstrumenter.java:121)
        at net.sourceforge.cobertura.instrument.CoberturaInstrumenter.addInstrumentationToSingleClass(CoberturaInstrumenter.java:233)
        at net.sourceforge.cobertura.instrument.Main.addInstrumentationToSingleClass(Main.java:274)
        at net.sourceforge.cobertura.instrument.Main.addInstrumentation(Main.java:283)
        at net.sourceforge.cobertura.instrument.Main.addInstrumentation(Main.java:292)
        at net.sourceforge.cobertura.instrument.Main.parseArguments(Main.java:373)
        at net.sourceforge.cobertura.instrument.Main.main(Main.java:395)
8 Jul, 2013 2:05:07 PM net.sourceforge.cobertura.coveragedata.CoverageDataFileHandler saveCoverageData
INFO: Cobertura: Saved information on 2 classes.

以下是与上述异常相关的代码。

public class InstrumentationFailsOnFirstNewClassInTryBlock {


    public void saveToDatabase() {
        //
        try {
//            boolean b=false;
//            if ( b) {
//                System.out.println("no action");
//            }
            DataAccess da = new DataAccess();
            System.out.println("nothing");

        } catch (Exception e) {


        }
    }
}
  class DataAccess {
    public DataAccess() {
        //To change body of created methods use File | Settings | File Templates.
    }
}

如果我取消注释代码块中的一些伪语句,那么检测工作正常。有人看过这个吗?任何潜在的修复?

编辑:java6 和 java7 出现错误。

最佳答案

最初的问题是由于 Cobertura 缺陷造成的。它不是固定的。 Cobertura 现在支持 auxillary classpath. 的附加参数.这将用于解析检测所需的任何类。

cobertura-ant task documentation

Adding auxClasspath

auxClasspath argument is designed to remove the ClassNotFoundException during instrumentation. See https://github.com/cobertura/cobertura/wiki/FAQ#classnotfoundexception-during-instrumentation for more information on this argument

关于java.lang.RuntimeException : java. lang.ClassNotFoundException : <org. objectweb.asm.ClassWriter.getCommonSuperClass(未知来源)>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17522385/

相关文章:

java - jdk 1.7 + tomcat 7 + 运行批处理

maven - 当 Maven 父 pom 启用时,如何在子项目中禁用 Cobertura?

maven-2 - maven 多模块项目上的 cobertura

java - 如何在 Jbehave 测试报告中显示完整的堆栈跟踪

java - Java Swing 游戏中重置倒计时器不起作用 + JDialog/JOptionPane

java - 没有关于不兼容转换的编译器错误

Java 7 不支持应该支持的密码

ant - Cobertura 与 Ant 脚本 : xml/html coverage report always show 0% coverage everywhere

java - 扩展 ArrayList 并使用/创建类似的构造函数

java - 尝试以只读方式优化 Hibernate 查询