Перекомпилировать декомпилированный исходный код Java (JD/JAD), содержащий инструкции перехода.

StackOverflow https://stackoverflow.com/questions/2036984

Вопрос

(Похожий вопрос: Компиляторы Java или языки JVM, поддерживающие goto?)

Я декомпилировал jar (юридически, в целях отладки) и хочу его перекомпилировать.

Я использовал оба ДЖАД и Джей Ди и оба не компилируются из-за инструкций перехода

Например.

      goto _L1

      ...
      L1: 
      return true;

Есть ли простой способ (или любой способ) его перекомпилировать?(За исключением ручного рефакторинга и удаления gotoх)


Это было полезно?

Решение

Нет, нет.В вашем случае ни JD, ни JAD не смогли правильно декомпилировать файлы классов.Операторы goto дают подсказку о реальном ходе выполнения программы.

Вы можете напрямую связаться с командой Java Decompiler, отправить файл класса, в котором декомпиляция приводит к недопустимому исходному коду, и спросить, является ли это ошибкой в ​​текущей версии или функцией, которая еще не реализована.

Другие советы

JAD — действительно потрясающий декомпилятор, JD…есть некоторые проблемы с операторами «try-catch-finally».

Вы пробовали декомпилятор Stiver (http://www.reversed-java.com/fernflower) ?

Эммануэль, автор книги JD.

Все декомпиляторы ищут шаблоны кода, соответствующие конструкциям исходного кода Java, и выбирают источник, который подходит лучше всего.

Судя по всему, ваш код не соответствует никакому шаблону, хранящемуся в JAD или JD, поэтому вы получаете некомпилируемый исходный код Java.Скорее всего, это связано с тем, что JAD активно не разрабатывался в течение нескольких лет.

Я бы посоветовал вам взглянуть на проект Soot, у которого гораздо более агрессивный декомпилятор.

http://www.sable.mcgill.ca/soot/

Я бы порекомендовал современный декомпилятор — например, CFR или FernFlower!

Я выложил в сеть 6 декомпиляторов Java:Jadx, быстрый и с поддержкой Android, CFR (поддерживает Java 8), JDCore (очень быстрый), Procyon, Fernflower и JAD (очень быстрый, но устаревший).

Их можно использовать без установки здесь: http://www.javadecompilers.com/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top