【问题标题】:Another parent class causes exception in classloader另一个父类在类加载器中导致异常
【发布时间】:2019-12-03 21:40:45
【问题描述】:

我有一些由类加载器加载的类 B。 我有我的类 A,它扩展了类 B'(它的名称和包路径等于 B 之一,但 BB ' 放在不同的罐子里)

我的问题是,是否可以类加载类 A?还是会出现异常?(由于类 BB' 冲突)

【问题讨论】:

  • “我有一些类 B 由类加载器加载” 所有类都由类加载器加载。你是说你有多个独立的类加载器吗? BB' 在同一个类加载器中吗?如果是同一个类加载器,那么只会加载其中一个,例如jar 文件在类路径中首先列出的那个。如果不同的类加载器,那么它们就是不同的类,即使它们具有相同的 FQN,即使它们来自同一个 jar 文件的相同 .class 文件,并且不兼容分配。
  • @Andreas 相同的类加载器。 B'首先加载。 B和A之后。 A 类扩展了 B。
  • 如果 B' 和 B 具有相同的包和类名,即相同的 FQN(完全限定名),那么单个类加载器不会同时加载它们,所以你刚才说的不可能是真的.

标签: java


【解决方案1】:

在多个 jar-s 中有多个同名和包的类不会导致自动抛出异常。

实际上如果重复的类是相同的,你不会有任何问题。

如果类不同,这可能是个问题。例如,如果正在加载的类的版本缺少另一个版本中存在的方法;并且某些客户端代码尝试调用缺少的方法,将抛出 NoSuchMethodError

【讨论】:

    猜你喜欢
    • 2019-02-15
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-17
    • 1970-01-01
    相关资源
    最近更新 更多