【问题标题】:Does Java's "Class.forName" scan all class names from all jars?Java 的“Class.forName”是否扫描所有 jar 中的所有类名?
【发布时间】:2019-05-03 09:42:24
【问题描述】:

在编译或运行时,我们通常有很多class/jar依赖,而数据库驱动的jar只是其中之一。所以呢

Class.forName(X)

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

【问题讨论】:

标签: java class jar driver loader


【解决方案1】:

它委托给调用类的ClassLoader。在大多数情况下,答案是肯定的,但是 ClassLoader 实现具有更复杂的规则,例如OSGI which uses dynamic modulesJEE Server Application Classloading

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

【讨论】:

    猜你喜欢
    • 2010-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多