2012-02-10 44 views
0

因此,我需要在运行时加载一些类,使用类ClassLoader中的System ClassLoader,但每次尝试时都会遇到ClassNotFoundException。使用System ClassLoader,我能做到的仅仅是:x.y.classineed(x和y是包),还是需要做如下操作:pathtox.x.y.classineed,假设它甚至可以做到这一点?Java如何使用System ClassLoader(无URLClassLoader)从类路径中的jar中加载类?

+1

*“我需要在运行时加载一些类,而ClassLoader不在类路径中的jar中,”*为什么?你究竟在努力实现什么? – 2012-02-10 00:48:18

回答

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

使用该类的ClassLoader。使用System classloader几乎从来都不是正确的决定。 – Dev 2012-02-10 01:13:41

相关问题