Я ищу отказоустойчивый способ обхода между файлом класса JVM и текстовым представлением и обратно.
Одно из строгих требований заключается в том, что полученный файл класса JVM с округлыми смещениями точно функционально эквивалентен исходному файлу класса JVM, если текстовое представление остается неизменным.
Кроме того, текстовое представление должно быть читаемым и редактируемым. Должно быть возможным внести небольшие изменения в текстовое представление (например, изменить текстовую строку или имя класса и т. Д.), Которые будут отражены в результирующем представлении файла класса.
Самое простое решение - использовать декомпилятор Java, такой как JAD, для генерации текстового представления, которое в этом случае будет просто воссозданным исходным кодом Java. А затем используйте javac для генерации байт-кода. Однако, учитывая состояние свободных Java-декомпиляторов, этот подход не работает при любых обстоятельствах. Довольно просто создать обфусцированный байт-код, который не сохраняется в полном циклическом файле классов / java-source / class-file (отчасти потому, что просто отсутствует отображение 1: 1 между байт-кодом JVM и Исходный код Java).
Существует ли отказоустойчивый способ выполнения циклического переключения файла класса JVM / представления текста / файла класса с учетом приведенных выше требований?
Обновление: Перед ответом - сэкономьте время и усилия, ознакомившись со всеми приведенными выше требованиями и особо отметив:
- «Текстовое представление байт-кода JVM» не обязательно означает «исходный код Java».