Откуда этот класс? - PullRequest
       7

Откуда этот класс?

3 голосов
/ 13 апреля 2010

Как бы вы установили, откуда был загружен класс (или, возможно, ресурс)?

Я пытаюсь понять, откуда именно был загружен класс. Кто-нибудь знает, можете ли вы узнать следующее:

  1. Из какого файла Jar появился класс?
  2. Какой загрузчик классов загрузил файл?

Ответы [ 6 ]

5 голосов
/ 13 апреля 2010

Класс Class имеет метод экземпляра getClassLoader(), который возвращает ссылку на загрузчик классов, который загрузил класс, который он представляет. Обратите внимание, что это может вернуть null. Смотри здесь .

Итак, если вы хотите знать, какой загрузчик классов загружен String (просто в качестве примера), вы можете сделать:

ClassLoader loader = String.class.getClassLoader();

или

ClassLoader loader = "I'm a String".getClass().getClassLoader();
2 голосов
/ 14 апреля 2010

Для одного класса решение - MyClass.class.getProtectionDomain().getCodeSource().getLocation(). (На самом деле, может иметь null ProtectionDomain или может не иметь CodeSource. Мой также бросить SecurityException.

2 голосов
/ 13 апреля 2010

Вы можете получить URL, например, вызвав MyClass.class.getResource ("MyClass.class").

1 голос
/ 13 апреля 2010
0 голосов
/ 22 июля 2010

если у вас есть экземпляр класса insta.getClass (). getClassLoader (). getName () -> это загрузчик классов, который загрузил класс

insta.getClass (). GetProtectionDomain (). GetCodeSource (). GetLocation () - где класс был загрузчиком из

0 голосов
/ 14 апреля 2010

Я бы пошел на это с параметром командной строки -verbose:class, сохранив вывод в текстовый файл, а затем с помощью grep (или поиска DOS, если вы Windows) увидеть детали загрузки этого класса. *

...