2016-09-07 4 views
2

ich eine Klasse geschaffen haben „Class Beine außerhalb Klassenmethode von Jar-Klasse aufrufen

package com.b 

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

ich eine JAR-Datei mit folgenden Klasse erstellt haben „Class A

package com.a 

import com.b 

public class A extends B 
{ 

} 

Wenn ich zu laden versucht, Jar dynamisch unter Verwendung von Code, bekomme ich Fehler "Class B" "classnotfoundexception"

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

Antwort

0

Ich glaube, dass es ist, weil Sie nicht alle Eltern ClassLoader zu Ihrem URLClassLoader so hat, dass es diese A aber nicht B, versuchen Sie stattdessen finden:

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

Diese Verwendung Thread.currentThread().getContextClassLoader() als Mutter ClassLoader entsprechend dem Kontext ClassLoader .

+0

Danke Mr. Nicolas Filotto. Es hat für mich funktioniert. –

Verwandte Themen