Можно ли переименовать класс Java строкой различной длины? - PullRequest
1 голос
/ 23 июня 2011

Я могу переименовать скомпилированный класс Java с любой строкой, которая имеет ту же длину, что и предыдущее имя класса, но когда длина отличается, файл .class перестает работать и выдает ошибку вроде:

unknown constant tag X

Где X - это число, которое меняется каждый раз, когда я пытаюсь запустить апплет.

Есть ли способ переименовать скомпилированный класс Java со строкой разной длины предыдущего имени без использования внешней программы?просто редактируем текстовое содержимое .class.

Ответы [ 2 ]

1 голос
/ 23 июня 2011

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

1 голос
/ 23 июня 2011

Я пойду прямо и скажу это - ручное редактирование файла .class, вероятно, не лучшая идея.Я имею в виду, это не может быть так сложно перекомпилировать вашу программу.Кроме того, если вы просто переименуете класс в исходном источнике, тогда ваш источник будет фактически соответствовать файлу класса (почему бы и нет?).И если у вас нет источника, я уверен, что вы найдете приличный декомпилятор (просто погуглите его - кажется, есть несколько хороших).Это позволило бы упростить переименование классов.

Однако, если вы действительно, действительно хотите напрямую манипулировать скомпилированным кодом, вы можете проверить ASM проект.Я считаю, что это позволяет вам делать то, что вы хотите (хотя мне это кажется немного сложным, и это будет включать создание внешней Java-программы, как вы этого не хотите).

Если вы все ещеесли вы захотите вручную изменить файл .class, то я могу порекомендовать вам Спецификация виртуальной машины JAVA (в частности, глава 4), где вы можете получить все полезные сведения о файлах .class.

...