【问题标题】:Early NoSuchMethodError whished by call of loader.loadClass()通过调用 loader.loadClass() 实现的早期 NoSuchMethodError
【发布时间】:2012-02-28 16:07:03
【问题描述】:

我想测试我的类 CallingClass 的新版本是否仍然适用于我的 jar,即使该类已经在它之后编译。

在我的例子中, CallingClass.m1() 调用了一个方法 CalledClass.method() ,它在 jar 中不存在。代码的执行会导致 NoSuchMethodError。

需要一个解决方案来再次测试 jar 类 CallingClass,但在执行之外。

我已尝试关注

public class ResolvingClassLoader extends ClassLoader
{
    public Class<?> loadClass(String name) throws ClassNotFoundException
    {
        return loadClass(name, true);
    }

    public static void main(String[] args) throws Exception
    {
        final ResolvingClassLoader loader = new ResolvingClassLoader();
        final String className = "CallingClass";
        loader.loadClass(className);
    }

}

并希望 loadClass 的调用生成 NoSuchMethodError,因为它解析(即链接)类。事实并非如此。你知道如何生成“早期”的 NoSuchMethodError 吗?

【问题讨论】:

    标签: java linker classloader


    【解决方案1】:

    NoSuchMethodError 只有在调用不存在的方法时才会产生,因此只有调用该方法才能产生。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      • 2012-10-31
      • 2015-12-04
      • 2013-05-28
      • 1970-01-01
      相关资源
      最近更新 更多