Recompilação compilado Java (JD / JAD) de origem que contém Goto instruções
-
19-09-2019 - |
Pergunta
(Questão: Java compiladores ou linguagens JVM que o apoio Goto? )
Tenho compilado uma jarra (Legalmente, para fins de depuração) e quer recompilar-lo.
Eu usei tanto JAD e JD e ambos não compilar devido ao Goto instruções
por exemplo.
goto _L1
...
L1:
return true;
Existe uma maneira fácil (ou forma qualquer) para recompilar-lo? (Exceto para refatorar e remover manualmente do goto
)
Solução
Não, não há. No seu caso, nem JD nem JAD foram capazes de decompor os arquivos de classe corretamente. As demonstrações 'Goto' são uma dica sobre o fluxo do programa actual.
Você pode contactar a equipa de Java Decompiler diretamente, enviar um arquivo de classe, onde decompilation resulta em código fonte ilegal e perguntar se é um bug na versão atual ou um recurso que ainda não foi implementado.
Outras dicas
JAD é um decompiler realmente incrível, JD ... ter alguns problemas com os "try-catch-finally" declarações.
vocêTem tentar o decompiler de Stiver ( http://www.reversed-java.com/fernflower )?
Emmanuel, autor de JD.
Todos os decompilers procurar padrões de código que correspondem a construções de origem Java e escolha a fonte que se encaixa melhor.
Aparentemente, o código que você tem não se conforma com qualquer padrão armazenada em qualquer JAD JD modo a obter-fonte Java uncompilable. Isso é mais provável porque JAD não foi desenvolvido ativamente por vários anos.
eu sugiro que você olhar para o projeto fuligem que tem um decompiler muito mais agressiva.
Gostaria de recomendar um decompiler moderna - como o CFR ou FernFlower
Eu coloquei em linha 6 Java decompilers:. Jadx, rápido e com suporte Android, CFR (suporta Java 8), JDCore (muito rápido), Procyon, Fernflower e JAD (muito rápido, mas desatualizado)
Pode-se usá-los sem a instalação aqui: http://www.javadecompilers.com/