Я попытался создать ASM ClassReader из анонимного класса, но не удалось.Build ClassReader из анонимного класса, созданного Unsafe
Анонимный класс создан:
Class cls = Unsafe.defineAnonymousClass(Hoster, byte[], null);
The cls.getName() является class code.jit.asm.example.Callee/629106582
, который несколько отличается от имени tradtion мы видим: class code.jit.asm.example.Callee
Тогда я попробовал:
a) ClassReader cr = new ClassReader(cls.getName())
b) public static InputStream getClassInputStream(Class cls){
String classAsPath = cls.getName().replace('.', '/') + ".class";
return cls.getClassLoader().getResourceAsStream(classAsPath);
//return cls.getResourceAsStream(classAsPath);
}
ClassReader cr = new ClassReader(getClassInputStream(cls))
И a) и b) поднимают то же исключение:
java.io.IOException: Class not found
at org.objectweb.asm.ClassReader.readClass(ClassReader.java:455)
at org.objectweb.asm.ClassReader.<init>(ClassReader.java:
Как я могу получить входной поток анонимного класса?
Полезно использовать тег [tag: java] для Java-вопросов. –
"/" не является ([egal] (http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.8) для имени класса. Как вы его создали? – Jayan
@Jayan, он создан Unsafe.defineAnonymousClass (..) –