Я пишу программу, которая анализирует файлы .class
. Я хочу привязать имя пакета и класс к моему выводу.Перевести пакет + имя класса в .class filename
Мой план состоит в том, чтобы написать функцию, которая принимает имя пакета и класса в качестве входных данных и находит соответствующий файл .class
(так что пользователю также не нужно вводить его и не может ошибиться), где «find» следует читать как «дать мне некоторые данные, которые я могу использовать в качестве аргументов для конструктора ClassParser
BCEL» (либо имя файла, либо имя zip-файла и имя в zip-файле).
Как это сделать? Есть ли у Java что-то, что делает это? Я понимаю, что разрешение имен должно выполняться в контексте CLASSPATH
, поэтому пользователь должен, вероятно, поставить один из них; хорошо.
Примечание: решения должны не выполнить любой код из файла .class
. Просто байты, ma'm ;-)
Я не указал явно, хотя я хотел передать, что разрешение класса должно выполняться в пути к классам, предоставленном пользователем, который может отличаться от того, в котором мой код работает под/с. Я думаю, что все, что мне нужно сделать, это дать разные аргументы 'new ClassPath (...)'. С этим на месте это выглядит очень многообещающе! –
Я предполагал, что вам нужна возможность предоставить произвольный путь класса; поэтому я выбрал конструктор в примере, так как иначе для класса будет работать и ClassPath.SYSTEM_CLASS_PATH. Обратите внимание, что 'ClassPath', построенный с явным путем, не находит системные классы, поскольку они недоступны из явного пути класса, вам необходимо [предоставить' SYSTEM_CLASS_PATH' в качестве родителя] (http: //commons.apache. орг/правильный/Обще-BCEL/apidocs/орг/Apache/BCEL/Util/ClassPath.html # ClassPath-org.apache.bcel.util.ClassPath-java.lang.String-) для этого. – Holger