그래서 Class 클래스의 항아리에서 System ClassLoader를 사용하여 런타임에 클래스를로드해야하지만, 시도 할 때마다 ClassNotFoundException이 발생합니다. System ClassLoader를 사용하면 x.y.classineed (x 및 y는 패키지 임) 또는 다음과 같은 작업을 수행 할 수 있습니까 : pathtox.x.y.classineed, 이것을 수행 할 수 있다고 가정합니다.Java System ClassLoader (URLClassLoader 없음)를 사용하여 클래스 경로의 항아리에서 클래스를로드하는 방법은 무엇입니까?
0
A
답변
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
* "클래스 패스의 시스템 클래스 로더에서 런타임시 일부 클래스를로드해야합니다."* 왜? 실제로 달성하고자하는 것은 무엇입니까? –