Отсутствует код в декомпилированном файле JAVA. Как правильно перекомпилировать?

Мне дали задание внести небольшую модификацию в скомпилированный файл .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: это инструмент для загрузки данных, и нам действительно нужно изменить сопоставление полей, которое ранее было жестко запрограммировано...

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

Stultuske 27.02.2019 15:22

Мне кажется, что ваш декомпилятор устарел. Попробуйте более свежий. stackoverflow.com/questions/272535/…

markspace 27.02.2019 15:29

Модификация Маленький означает, что большинство классов и методов могут остаться прежними. Возможно, ASM, библиотека для управления байтовым кодом, может быть лучше.

Joop Eggen 27.02.2019 15:29

@markspace спасибо, это помогло. Я на самом деле декомпилировал его онлайн с гораздо лучшим результатом. Тем не менее, остается вопрос: как я могу перекомпилировать, чтобы он действовал так же? Кстати, я отредактировал свой вопрос, чтобы отразить, что на самом деле представляет собой этот инструмент, и почему мы не можем редактировать источник.

Laureant 27.02.2019 15:41

Если вам не нужно перекомпилировать файл класса, не имеет значения, что в классе есть забавные байт-коды. Сосредоточьтесь только на тех классах, которые вам нужно изменить, остальные должны быть в порядке.

markspace 27.02.2019 15:53
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
477
0

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