Recompilación decompiled Java (JD / JAD) de origen que contiene las instrucciones Goto
-
19-09-2019 - |
Pregunta
(pregunta relacionada: compiladores Java JVM o idiomas que apoyan Goto? )
He descompilada un frasco (Legalmente, para fines de depuración) y quieren volver a compilar.
Yo he usado tanto JAD y JD y ambos no compilan debido a las instrucciones Goto
por ejemplo.
goto _L1
...
L1:
return true;
¿Hay una manera fácil (o cualquier forma) para volver a compilar? (A excepción de refactorizar y retirar manualmente de la goto
)
Solución
No, no lo hay. En su caso, ni tampoco JD JAD fueron capaces de descomponer los archivos de clase correctamente. Las declaraciones del 'Goto' son una pista sobre el flujo del programa real.
Se puede ponerse en contacto con el equipo de Java Decompiler directamente, enviar en un archivo de clase donde los resultados descompilación de código fuente ilegal y preguntan si se trata de un error en la versión actual o una característica que aún no se ha implementado.
Otros consejos
JAD es un decompilador realmente sorprendente, JD ... tiene algunos problemas con las declaraciones "try-catch-finally".
Tiene que pruebe el decompilador de Stiver ( http://www.reversed-java.com/fernflower )?
Emmanuel, autor de JD.
Todos los descompiladores buscan patrones de código correspondientes a las construcciones de origen Java y elegir la fuente que se adapte lo mejor.
Al parecer, el código que tiene no se ajusta a ningún patrón almacenado en cualquiera JAD JD para que pueda obtener uncompilable fuente de Java. Esto es más probable porque JAD no se ha desarrollado activamente desde hace varios años.
Yo sugeriría nos fijamos en el proyecto de hollín que tiene una decompilador mucho más agresivo.
Yo recomendaría una moderna decompilador - como CFR o FernFlower
Me puse en línea 6 descompiladores Java:. Jadx, rápido y con el apoyo de Android, CFR (compatible con Java 8), JDCore (muy rápido), Procyon, Fernflower y JAD (muy rápido, pero anticuado)
Uno puede usarlos sin necesidad de instalación aquí: http://www.javadecompilers.com/