【问题标题】:Override existing class by a class loaded through java class loader用通过 java 类加载器加载的类覆盖现有类
【发布时间】:2016-05-04 00:07:07
【问题描述】:

我的包中有一个名为 MyTest 的类。它有一个名为int getVal() 的方法。我希望这个类被一个 jar 中同名的类覆盖(比如abc.jar)。我正在使用 java 类加载器加载 jar,但我仍然无法覆盖我的包中的类。我不想使用反射。有没有办法通过jar中的类覆盖包类?

我也试过Thread.currentThread().setContextClassLoader(myclassloader)

【问题讨论】:

  • 在使用标签提问之前尝试检查标签的文本。 JCL 不是你想要的,但你想要的可能已经在那里了。
  • 您似乎正在尝试这样做以进行测试,您是否考虑过使用 Mockito 或 PowerMock 等模拟框架?您正在尝试做的事情似乎很肮脏。

标签: java class java-8 classloader


【解决方案1】:

确保abc.jar 出现在类路径的首位。

当依赖于MyTest 的类由不同的类加载器加载时,添加另一个类加载器可能不起作用。

【讨论】:

  • 除了类加载器还有其他方法吗?我必须通过从 jar 中加载一个类来覆盖我的包中的方法。
  • 正如我所说,abc.jar 必须出现在类路径中的其他类之前。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-26
  • 2011-05-05
  • 1970-01-01
  • 2015-01-22
  • 1970-01-01
  • 1970-01-01
  • 2012-01-13
相关资源
最近更新 更多