2012-02-10 6 views
0

그래서 Class 클래스의 항아리에서 System ClassLoader를 사용하여 런타임에 클래스를로드해야하지만, 시도 할 때마다 ClassNotFoundException이 발생합니다. System ClassLoader를 사용하면 x.y.classineed (x 및 y는 패키지 임) 또는 다음과 같은 작업을 수행 할 수 있습니까 : pathtox.x.y.classineed, 이것을 수행 할 수 있다고 가정합니다.Java System ClassLoader (URLClassLoader 없음)를 사용하여 클래스 경로의 항아리에서 클래스를로드하는 방법은 무엇입니까?

+1

* "클래스 패스의 시스템 클래스 로더에서 런타임시 일부 클래스를로드해야합니다."* 왜? 실제로 달성하고자하는 것은 무엇입니까? –

답변

1

JAR 파일이 CLASSPATH에 없어야합니다.

잘 작동합니다. 내 CLASSPATH에 JDOM JAR이 있습니다.

package cruft; 

/** 
* ClassLoaderDemo 
* @author Michael 
* @since 2/9/12 7:09 PM 
* @link http://stackoverflow.com/questions/9220887/java-how-to-load-classes-out-of-a-jar-in-the-classpath-with-the-system-classload 
*/ 
public class ClassLoaderDemo { 
    public static void main(String[] args) { 
     try { 
      ClassLoader classLoader = ClassLoaderDemo.class.getClassLoader(); 
      if (classLoader != null) { 
       Class clazz = classLoader.loadClass("org.jdom.Document"); 
       System.out.println(clazz.getName()); 
      } 
     } catch (ClassNotFoundException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

+1 클래스의 ClassLoader를 사용합니다. System 클래스 로더를 사용하는 것은 거의 올바른 결정이 아닙니다. – Dev