Мне дали задание внести небольшую модификацию в скомпилированный файл .jar. У нас больше нет исходного кода для этого.
Я скачал JD-GUI, и мне удалось открыть файл .jar и увидеть его файлы классов, но я боюсь, что некоторые функции закомментировали только строки с заголовком //байтовый код. Это выглядит примерно так:
private static List<BatchInfo> createBatchesFromCSVFile(BulkConnection connection, JobInfo jobInfo, String csvFileName)
throws IOException, AsyncApiException
{
// Byte code:
// 0: new 109 java/util/ArrayList
// 3: dup
// 4: invokespecial 111 java/util/ArrayList:<init> ()V
// 7: astore_3
// 8: new 356 java/io/BufferedReader
......
Если есть такие функции, смогу ли я перекомпилировать файл? Я хочу отметить, что мне не обязательно вносить свои изменения в файл, в котором есть эти закомментированные строки. Но этот класс определенно используется в основном классе, который мне пришлось бы переписать.
PS: это инструмент для загрузки данных, и нам действительно нужно изменить сопоставление полей, которое ранее было жестко запрограммировано...
Мне кажется, что ваш декомпилятор устарел. Попробуйте более свежий. stackoverflow.com/questions/272535/…
Модификация Маленький означает, что большинство классов и методов могут остаться прежними. Возможно, ASM, библиотека для управления байтовым кодом, может быть лучше.
@markspace спасибо, это помогло. Я на самом деле декомпилировал его онлайн с гораздо лучшим результатом. Тем не менее, остается вопрос: как я могу перекомпилировать, чтобы он действовал так же? Кстати, я отредактировал свой вопрос, чтобы отразить, что на самом деле представляет собой этот инструмент, и почему мы не можем редактировать источник.
Если вам не нужно перекомпилировать файл класса, не имеет значения, что в классе есть забавные байт-коды. Сосредоточьтесь только на тех классах, которые вам нужно изменить, остальные должны быть в порядке.




если вам не нужно изменять этот код, даже не начинайте его декомпиляцию. почему у вас больше нет оригинального кода?