Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

274
Views
Obtenga Bytecode de una clase java no cargada

Tengo un proyecto con una carpeta "entrada" que contiene algunos archivos java (p. ej., test.java). Esta carpeta no es una fuente raíz y así es. Solo quiero analizar los archivos en la carpeta de entrada con mi programa. Un objetivo es obtener el código de bytes de los archivos en la carpeta de entrada y guardarlo en una cadena. Leí mucho sobre cómo obtener bytecodes de las clases (agentes de Java, bcel) pero no tengo muy claro cómo debo comenzar. ¿Tienes alguna idea y consejo para mí?

Editar: Compilé mis archivos y los guardé en una matriz de bytes. Usé la biblioteca javaassist como lo mencionó alguien. Mi código es ahora:

 ClassPool pool = ClassPool.getDefault(); CtClass cc = pool.get("Test"); byte[] b = cc.toBytecode(); System.out.println(Arrays.toString(b));

Como resultado estoy obteniendo:

 [-54, -2, -70, -66, 0, 0, 0, 52, 0, 93, 10, 0, 25, 0, 52, 8, 0, 53, 7, 0,...,115]

¿Cómo puedo obtener de la matriz de bytes la forma de código de bytes "legible por humanos", por ejemplo:

 iconst_0 // 03 istore_0 // 3b iinc 0, 1 // 84 00 01 iload_0 // 1a iconst_2 // 05 imul // 68 istore_0 // 3b goto -7 // a7 ff f9

¿Alguien tiene alguna idea?

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

"bytecode" se refiere a archivos de clase compilados. No tiene sentido preguntar cómo obtener el código de bytes de un archivo .java porque no hay código de bytes para obtener. Debe compilarlos con javac , Eclipse o similar. Luego, puede leer los archivos .class resultantes de la forma que desee.

Editar: para convertir el archivo de clase en una forma legible por humanos, necesita un desensamblador. Un desensamblador limitado llamado javap está incluido en el JDK, por lo que el enfoque más simple sería simplemente usarlo. Alternativamente, puede usar el desensamblador Krakatau , que admite funciones mucho más avanzadas que javap.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!