Alguém poderia me indicar quais ferramentas posso usar para manipular bytecodes, gostaria de saber como ferramentas como hibernate, etc conseguem por exemplo interceptar um metodo get e fazer com que determinado código deles rode.
Pelo que pesquisei eles fazem uso de proxies, porém não tenho ideia de como e com quais API’s eles fazem isso.
Vi que uma das dependencias dele é o asm, então peguei o jar deste: asm-1.4.2.jar
porém na hora de rodar da o seguinte erro:
Exception in thread "main" java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
at net.sf.cglib.core.ClassEmitter.begin_class(ClassEmitter.java:77)
at net.sf.cglib.core.KeyFactory$Generator.generateClass(KeyFactory.java:173)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.core.KeyFactory$Generator.create(KeyFactory.java:145)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:117)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:108)
at net.sf.cglib.core.KeyFactory.create(KeyFactory.java:104)
at Teste.main(Teste.java:7)
Realmente eles usam o cglib e o asm. Se quer algo mais alto nivel eu sugiro o Javasssit da JBoss. É uma biblioteca alto nivel com que vc consegue muitas das coisas que o pessoas do Hibernate, Spring e companhia usam.