Java';s";Class.forName“类;扫描所有JAR中的所有类名?

Java';s";Class.forName“类;扫描所有JAR中的所有类名?,java,class,jar,driver,loader,Java,Class,Jar,Driver,Loader,在编译或运行时,我们通常有很多类/jar依赖项,而数据库驱动程序的jar只是其中之一。我也是 Class.forName(X) 必须扫描所有这些.class/.jar文件名才能找到名为X的正确驱动程序类?如果没有,则Class.forName是否具有查找特定类的规则/算法?它将委托给调用类的类加载器。在大多数情况下,答案是肯定的,但也有ClassLoader实现具有更复杂的规则,例如or public静态类forName(字符串className)抛出ClassNotFoundExceptio

在编译或运行时,我们通常有很多类/jar依赖项,而数据库驱动程序的jar只是其中之一。我也是

Class.forName(X)

必须扫描所有这些.class/.jar文件名才能找到名为X的正确驱动程序类?如果没有,则
Class.forName
是否具有查找特定类的规则/算法?

它将委托给调用类的
类加载器。在大多数情况下,答案是肯定的,但也有
ClassLoader
实现具有更复杂的规则,例如or

public静态类forName(字符串className)抛出ClassNotFoundException{
Class caller=Reflection.getCallerClass();
returnforname0(className,true,ClassLoader.getClassLoader(caller),caller);
}

它将通过类路径上的所有文件夹/档案查找该类。为什么要问这个问题?顺便说一句,即使通过正常执行代码遇到类引用,它仍然在相同的位置查找类
public static Class<?> forName(String className) throws ClassNotFoundException {
  Class<?> caller = Reflection.getCallerClass();
  return forName0(className, true, ClassLoader.getClassLoader(caller), caller);
}