Можно ли отредактировать существующий файл .class из моей программы? - PullRequest
1 голос
/ 10 декабря 2011

Это может показаться странным вопросом, но мне понадобится целая вечность, чтобы объяснить, зачем мне это нужно ...

Мне нужен способ отредактировать уже существующий Java .class-файл в его JAR-файле с помощью командной строки или в моей программе на Python. Мне нужно, чтобы это происходило автоматически, когда пользователь нажимает кнопку.

Я понятия не имею, как это сделать, или если это возможно.

Ответы [ 3 ]

8 голосов
/ 10 декабря 2011

JAR-файл - это zip-пакет, вам нужно только извлечь его, отредактировать содержимое и вернуть обратно. Более сложная часть - как редактировать файл .class. Файл Java .class представляет собой двоичный формат , , вам могут помочь несколько библиотек .

1 голос
/ 10 декабря 2011

У вас есть проблема с этим подходом, если класс уже был загружен загрузчиком классов JVM, поскольку он может фактически не перечитывать файл .class до тех пор, пока приложение не будет перезапущено.

Я знаю, чтосуществует BCEL , но я не использовал его, поэтому я не знаю, можно ли его использовать а) с python или б) во время выполнения.

РЕДАКТИРОВАТЬ: На самом деле, список Джеффрилучше, так как предоставляет гораздо более полный список манипуляторов с байтовым кодом.

1 голос
/ 10 декабря 2011

Да, вы можете сделать это. Теперь, как ты это сделаешь, зависит от того, что ты хочешь сделать. Для решения междисциплинарных вопросов смотрите AspectJ . Используя AspectJ, вы можете добавить свой собственный код даже после компиляции класса.

...