2014-11-01 2 views
1
URLClassLoader child; 
    try { 
     child = new URLClassLoader(new URL[]{myJar.toURI().toURL()}, Test2.class.getClassLoader()); 
     child.loadClass("com.bla.bla.StringUtilService"); 
    } catch (MalformedURLException | ClassNotFoundException ex) { 
     ex.printStackTrace(); 
    } 

я получаю ClassNotFoundException в loadClass.URLClassLoader не может загружать классы из кувшина динамически

Я попробовал несколько вариантов кода, таких как

URL[] urls = { new URL("jar:file:" + "E:\\Works\\Workspace\\JUnit_Proj\\client.jar"+"!/") }; 
URLClassLoader cl = URLClassLoader.newInstance(urls); 

Но все результаты в ClassNotFoundException!

Я пробовал отладку в Eclipse, но экземпляр загрузчика класса не может загружать классы из jar. Классы Vector пусты.

+0

Каков тип 'myJar'? – Henry

+0

@Henry: java.io.File. Пробовал и JarFile. – javaCurious

ответ

1

Преемник с использованием различных costructor из URLClassLoader.

0

Класс является прямым дочерним элементом каталога в URL-адресе, поэтому вам не нужен пакет.

Попробуйте это без упаковки. Как это:

URLClassLoader child; 
try { 
    child = new URLClassLoader(new URL[]{myJar.toURI().toURL()}, Test2.class.getClassLoader()); 
    child.loadClass("StringUtilService"); 
} catch (MalformedURLException | ClassNotFoundException ex) { 
    ex.printStackTrace(); 
} 

Кроме того, попробуйте так:

URLClassLoader child; 
try { 
    child = new URLClassLoader(new URL[]{myJar.toURI().toURL()}, getClass().class.getClassLoader()); 
    child.loadClass("StringUtilService"); 
} catch (MalformedURLException | ClassNotFoundException ex) { 
    ex.printStackTrace(); 
} 

Решение от:ClassNotFoundException while loading a class from file with URLClassLoader

+0

Не повезло! Я пробовал все перестановки – javaCurious

+0

Кто-нибудь успешно загружал классы из банок динамически? – javaCurious

+0

Читайте это: http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html – viniciussss

Смежные вопросы