mac - java decompiler online
Inspeccionar mediante programaciĆ³n archivos.class (6)
Creo que javassist podría ayudarte también.
http://www.jboss.org/javassist/
Nunca he tenido la necesidad de usarlo, pero si lo intenta, ¿nos haría saber sus comentarios al respecto?
Aunque creo que es más para la manipulación de bytecode que para la inspección de clase.
Estoy trabajando en un proyecto en el que realizamos una gran cantidad de transferencias de objetos remotos entre un servicio Java y clientes escritos en otros idiomas. Dadas nuestras limitaciones actuales, he decidido ver qué se necesitaría para generar código basado en una clase Java existente. Básicamente necesito tomar un archivo .class
(o una colección de ellos) analizar el bytecode para determinar todos los miembros de los datos y quizás getters / setters y luego escribir algo que pueda dar salida al código en un idioma diferente para crear una clase con el mismo estructura.
No estoy buscando descompiladores estándar como JAD. Necesito poder tomar un archivo .class
y crear un modelo de objeto de sus miembros y métodos de datos. ¿Es esto posible?
He usado BCEL en el pasado y fue bastante fácil de usar. Fue hace unos años, así que puede haber algo mejor ahora.
He usado BCEL y me parece bastante incómodo. ASM es mucho mejor. Utiliza mucho los visitantes (lo que puede ser un poco confuso) y no crea un modelo de objetos. No crear un modelo de objeto resulta ser una ventaja, ya que es poco probable que cualquier modelo que desee crear parezca una interpretación literal de todos los datos.
Estoy sorprendido de que nadie haya mencionado ASM todavía. Es la mejor biblioteca de códigos de bytes que puede comprar tu dinero. Bueno, vale, es gratis.
Según su descripción, parece que la simple reflexión sería suficiente. Puede descubrir toda la estructura estática de la clase, así como acceder a los campos de una instancia particular.
Solo cambiaría a BCEL si está tratando de traducir las instrucciones del método. (Y si eso es lo que intenta automatizar, ¡buena suerte!)
JAD es un descompilador de Java que no permite el acceso programático. Ya no está disponible, y probablemente no funcionará para proyectos más nuevos con bytecodes Java7.