2016-09-07 33 views
2

我已經創建了一個類「Class B調用從罐類以外的類方法

package com.b 

public class B 
{ 
    public void printMsg()  
    { 
     System.out.println("Called"); 
    } 
} 

我已低於類創建的jar文件中包含「Class A

package com.a 

import com.b 

public class A extends B 
{ 

} 

當我試圖加載jar動態使用下面的代碼,我得到錯誤「Class B」「classnotfoundexception

ClassLoader cl = new URLClassLoader(new URL[] { new URL(jarFullPath) }); 
Class<?> cla = cl.loadClass(className); 
Object obj = cla.newInstance(); 

回答

0

我認爲,那是因爲你沒有提供任何父ClassLoaderURLClassLoader,使得它可以找到A,但不B,試試這個:

ClassLoader cl = new URLClassLoader(
    new URL[] {new URL(jarFullPath)}, Thread.currentThread().getContextClassLoader() 
); 

這種使用Thread.currentThread().getContextClassLoader()ClassLoader對應上下文ClassLoader

+0

感謝Mr.Nicolas Filotto。它爲我工作。 –