Можно ли восстановить src из развернутого файла.WAR?
Я работаю со многими устаревшими приложениями здесь. Один из них (развернутый в производственной среде) необходимо отредактировать, поскольку он не имеет журнала.
Я декомпилировал его, но понятия не имею, как собрать его в этой ситуации. Я не смог даже перекомпилировать де-классы, отредактированные из-за оптимизации компилятора.
(Я использую Java 6)
Извините, если мой английский плохой, я просто младший
2 ответа
Нет. Файл WAR - это всего лишь специализированный файл JAR, который содержит, помимо скомпилированного байт-кода, файлы JSP, статические файлы HTML и файл дескриптора, который сообщает веб-серверу, как развернуть приложение. То, что он не содержит, является исходным кодом. Это означает, что ваши единственные варианты - работа с декомпилированным кодом или запрос исходных кодов у оригинальных разработчиков.
Как вы обнаружили, компиляция и декомпиляция являются процессами с потерями, поэтому вы не можете вообще перекомпилировать декомпилированный код, и даже если он компилируется, он может не совпадать с исходным двоичным файлом.
Одной из альтернатив является использование дизассемблера и ассемблера Krakatau. Krakatau может обойти байт-код Java в удобочитаемом текстовом формате, что позволяет легко редактировать байт-код без потерь. Основным недостатком является то, что вы должны хорошо понимать байт-код Java, чтобы понимать дизассемблирование, и его намного сложнее читать или редактировать, чем исходный код Java.