2011-04-01 29 views
7

Necesito leer el contenido del archivo .class de java en mi programa java o hay algún método disponible para leer el mismo. De hecho, quiero recuperar la tabla de variables locales, la tabla de números de línea, etc. del archivo .class de Java pero no estoy obteniendo ningún método para leer lo mismo?¿Cómo leer el archivo .class?

Respuesta

2

Se necesita un Java decompiler o algo así that

+0

No, en realidad tenemos que escribir el código Java puro. No tenemos que usar ninguna herramienta – Neha

+0

¿No entiendo? – RoflcoptrException

+0

Básicamente mi proyecto es generar casos de prueba utilizando pruebas de caja blanca. Normalmente nuestros NetBeans o eclipse tienen sus propios editores, donde pueden compilar su código y también generar los casos de prueba. Pero lo único que tenemos que hacer es leer el archivo .java almacenados en el disco en cualquier lugar y generar los casos de prueba. Y para eso estamos buscando cómo obtener los símbolos, su tipo de datos, su valor, etc. Y estaba pensando en leer un archivo .class ya que contiene variables locales tabla, tabla de números de línea, etc. Y entonces no estamos usando ninguna herramienta – Neha

0

Usted puede obtener estos datos usando BCEL

el código de librería Ingeniería Byte tiene la intención de dar a los usuarios una posibilidad conveniente analizar, crear y manipular (binario) archivos de clase Java (los que terminan con .class). Las clases están representadas por objetos que contienen toda la información simbólica de la clase dada: métodos, campos e instrucciones de códigos de bytes, en particular.

O también puede utilizar Reflection API para obtener información del archivo de clase

+0

ASM es mucho más compatible, úselo. – MeBigFatGuy

+1

Reflection no obtiene información del archivo de clase sino del objeto de clase (después de que el cargador de clases haya hecho su trabajo) –

4

Quiero recuperar la tabla variable local, la línea de una tabla de números, etc

Para leer los que necesite ASM, BCEL o una biblioteca de códigos de bytes similar. La API de reflexión de Java no se lo dice a usted.