2014-11-01 4 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이 표시됩니다.URLClassLOader에서 jar 클래스를 동적으로로드 할 수 없습니다.

나는 ClassNotFoundException에 여러 개의 같은

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

같은 코드의 변종 그러나 모든 결과를 시도!

Eclipse에서 디버깅을 시도했지만 클래스 로더 인스턴스가 jar에서 클래스를로드 할 수 없습니다. Vector 클래스는 비어 있습니다.

+0

'myJar'의 유형은 무엇입니까? – Henry

+0

@Henry : java.io.File. JarFile을 사용해 보았습니다. – javaCurious

답변

1

을 URLClassLoader의 다른 costructor를 사용하여.

0

클래스는 URL에있는 dir의 직접적인 하위 항목이므로 패키지가 필요하지 않습니다.

패키지없이 사용해보십시오. 이처럼 : 또한

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

누구나 jars에서 클래스를 동적으로 성공적으로로드 했습니까? – javaCurious

+0

읽어보기 : http://tutorials.jenkov.com/java-reflection/dynamic-class-loading-reloading.html – viniciussss