From: Jayan M N <ja...@gm...> - 2013-07-08 08:56:12
|
I get following exception with new cobertura (2.0.2..)<https://github.com/cobertura/cobertura>. I guess it is some how related to new object creation immediately in a new 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. The following is the code related to above exception. 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. }} If I un-comment the code block some dummy statements , then instrumentation works fine. Has any one seen this? Any potential fixes? Edit: Error occurs with java6 and java7. (question is copied from http://stackoverflow.com/questions/17522385/java-lang-runtimeexception-java-lang-classnotfoundexception-org-objectweb-asm, it appears to be cobertura or asm issue) |