Riconversione decompilato Java (JD / JAD) di origine che contiene le istruzioni goto
-
19-09-2019 - |
Domanda
(domanda Correlati: compilatori Java o lingue JVM che supportano goto? )
Ho decompilato un barattolo (legalmente, a scopo di debug) e si vuole ricompilare esso.
Ho usato sia JAD e JD ed entrambi non si compilano a causa di istruzioni goto
per es.
goto _L1
...
L1:
return true;
C'è un modo semplice (o qualsiasi altro modo) per ricompilare esso? (Ad eccezione di refactoring e rimuovere manualmente il goto
)
Soluzione
No, non c'è. Nel tuo caso, né JD nè JAD sono stati in grado di decompilare correttamente i file di classe. Le dichiarazioni del 'goto' sono un suggerimento circa il flusso del programma vero e proprio.
Si potrebbe contattare il team Java Decompiler direttamente, inviano in un file di classe dove i risultati decompilazione nel codice sorgente illegale e chiedono se si tratta di un bug nella versione corrente o una funzione che non è ancora stato implementato.
Altri suggerimenti
JAD è un decompilatore veramente sorprendente, JD ... hanno alcuni problemi con le normative "try-catch-finally".
Avete provare il decompilatore di Stiver ( http://www.reversed-java.com/fernflower )?
Emmanuel, autore di JD.
Tutti i decompilatori cercano modelli di codice corrispondenti alle costruzioni sorgente Java e scegliere la fonte che si adatta al meglio.
A quanto pare il codice che avete non è conforme a qualsiasi modello memorizzato in uno o JAD JD in modo da ottenere uncompilable sorgente Java. Questo è più probabile perché JAD non è stato attivamente sviluppato da diversi anni.
Vorrei suggerire si guarda al progetto di fuliggine che ha un decompilatore molto più aggressivo.
mi sento di raccomandare un moderno decompilatore - come CFR o FernFlower
ho messo in linea 6 decompilatori Java:. Jadx, veloce e con il supporto di Android, CFR (supporta Java 8), JDCore (molto veloce), Procione, Fernflower e JAD (molto veloce, ma obsoleto)
Uno li può usare senza installazione qui: http://www.javadecompilers.com/