Дамп java.lang. Класс создан из файлов JAR - PullRequest
2 голосов
/ 09 августа 2010

Я пытаюсь найти способ собрать все файлы java.lang.Class, загруженные из файлов jar, но игнорирую их из самого исходного кода.

Я нашел интерфейс java.lang.instrument.Instrumentation и подумал, что он может служить цели, но оказалось, что не совсем ... Одна из доступных функций "getAllLoadedClasses" выводит все файлы java.lang.Class (которые это хорошо), но это не только дампы, загруженные из файла JAR, а также загруженные из исходного файла.

Существует ли конфигурация, позволяющая нам настроить этот параметр таким образом, чтобы выводились только файлы java.lang.Class, созданные из файлов jar, или существует более подходящее решение в дикой природе?

То, чего я хочу достичь в представлении кода, будет примерно таким, как показано ниже.

java.lang.Class[]
classesLoadedFromJars = getClassesLoadedFromJars();

for (java.lang.Class class : classesLoadedFromJars) {
     // .............. 
}

Слово или два в предложении будут полезны!

Заранее спасибо.

1 Ответ

1 голос
/ 10 августа 2010

Загрузчик классов должен быть в состоянии дать вам подсказку о том, откуда был загружен определенный класс.

ClassLoader loader = myClass.getClassLoader()
if (loader instanceof URLClassLoader) {
    URLClassLoader uLoader = (URLClassLoader)loader;
    URL cURL = uLoader.getResource(myClass.getName().replace('.', '/')+".class");
}

, если cURL начинается с jar://, класс произошел из файла jar

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...