2012-02-28 43 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。