2012-02-28 42 views
0

我想测试我的类CallingClass的新版本是否仍然适用于我的jar,即使类已经在它之后编译。通过loader.loadClass调用早期的NoSuchMethodError()

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

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

我曾尝试以下

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吗?

回答

0

NoSuchMethodError仅在调用不存在的方法时才会生成,因此只有通过调用方法才能生成NoSuchMethodError。