Чтение байт-кода из выгруженных классов во внешних jarfiles
В моем Java-приложении я хочу прочитать содержимое байт-кода из файлов классов, которые на самом деле не загружены, в файлы JAR, которые также не загружены. Например, мне нужно иметь возможность взять любой данный jarfile и найти все классы внутри него, в идеале. Итак, возьмем следующую ситуацию:
Моему приложению (которое является своего рода библиотекой) предлагается "проверить" определенный jar-файл по любому пути, и ему предоставляются различные шаблоны, предоставляемые приложением, использующим мою библиотеку, для поиска сходств (например, постоянных сходств пула). Поэтому моя библиотека должна пройти через все банки в файле класса. Очевидно, я мог бы сделать его жестко запрограммированным или загруженным из файла, но я бы предпочел иметь его, чтобы я мог пройти через байт-код всех файлов в банке, чтобы соответствовать им.
1 ответ
Вы должны использовать JarFile API и перебирать файлы в нем. Это не должно быть трудно сделать. Эта статья может стать хорошим началом.
А что касается байт-кода, вы можете просто обработать каждый (несжатый) файл класса как байтовый массив и вычислить хэш, возможно, MD5-хэш каждого файла и сравнить его с предыдущим хеш-кодом.