Java, ASM org.objectweb.asm.util.CheckClassAdapter verursacht Nicht unterstützte major.minor Version 0.0
-
22-07-2019 - |
Frage
Ich erhalte folgende Ausnahme:
java.lang.UnsupportedClassVersionError: net/sourceforge/barbecue/BarcodeException : **Unsupported major.minor version 0.0**
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.lang.ClassLoader.defineClass(ClassLoader.java:466)
at pl.wroc.pwr.judy2.master.TestClassLoader.loadClass(TestClassLoader.java:51)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389)
at java.lang.Class.getConstructor0(Class.java:2699)
at java.lang.Class.getConstructor(Class.java:1657)
at junit.framework.TestSuite.getTestConstructor(TestSuite.java:83)
at junit.framework.TestSuite.<init>(TestSuite.java:131)
at org.junit.internal.runners.JUnit38ClassRunner.<init>(JUnit38ClassRunner.java:67)
at org.junit.internal.builders.JUnit3Builder.runnerForClass(JUnit3Builder.java:14)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29)
at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57)
at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24)
at junit.framework.JUnit4TestAdapter.<init>(JUnit4TestAdapter.java:31)
at junit.framework.JUnit4TestAdapter.<init>(JUnit4TestAdapter.java:24)
at pl.wroc.pwr.judy2.util.JUnitTestRunner.runTest(JUnitTestRunner.java:26)
Wenn zum Instrument einige Bytecode mit folgenden Quellcode versuchen. (Um genau zu sein, bekomme ich diese Ausnahme, wenn ich versuche, modifizierte Bytecode auszuführen)
public byte[] instrument(byte[] bytecode)
{
ClassReader cr = new ClassReader(bytecode);
ClassWriter cw = new ClassWriter(cr, 0);
// create new class adapter
AbstractInstrumentClassAdapter ca = new InstrumentClassAdapterTracer(cw, tracer);
// System.out.println("----------------------------------- Daikon start");
cr.accept(ca, 0);
ClassReader cr2 = new ClassReader(cw.toByteArray());
ClassWriter cw2 = new ClassWriter(cr2, 0);
ClassAdapter checker = new CheckClassAdapter(cw);
AbstractInstrumentClassAdapter ca2 = new InstrumentClassAdapterInstrumenter(checker);
cr2.accept(checker, 0);
return cw2.toByteArray();
}
Ich dachte, es meine InstrumentClassAdapterInstrumenter Umsetzung sein könnte, so ließ ich es aus und ich bin mit nur CheckClassAdapter im Moment. sehen kann jemand, was mache ich falsch?
Cheers,
Lösung
LOL, schließlich als ich einige Frage hier gefragt haben, wie es scheint einfach vertippt zu sein, sollte
ClassWriter cw2 = new ClassWriter(cr2, 0);
ClassAdapter checker = new CheckClassAdapter(cw2);
nicht
ClassWriter cw2 = new ClassWriter(cr2, 0);
ClassAdapter checker = new CheckClassAdapter(cw);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow