Сканирует ли Java Class.forName все имена классов из всех jar-файлов? - PullRequest
0 голосов
/ 01 декабря 2018

При компиляции или запуске у нас обычно много зависимостей класса / jar, и jar драйвера базы данных - лишь одна из них.Итак,

Class.forName(X)

должен сканировать все эти имена файлов .class / .jar, чтобы найти подходящий класс драйверов с именем X?Если нет, есть ли у Class.forName какое-либо правило / алгоритм для нахождения определенного класса?

1 Ответ

0 голосов
/ 01 декабря 2018

Делегируется ClassLoader вызывающего класса.В большинстве случаев ответ положительный, но есть ClassLoader реализации с более сложными правилами, например OSGI, в котором используются динамические модули или загрузка классов серверных приложений JEE .

public static Class<?> forName(String className) throws ClassNotFoundException {
  Class<?> caller = Reflection.getCallerClass();
  return forName0(className, true, ClassLoader.getClassLoader(caller), caller);
}
...