关于ClassLoader的一点小问题

  今天在看某框架的源码的时候,遇到一个使用URLClassLoader加载Servlet类的问题,当自己在eclipse里面做试验的时候,始终无法把Class加载成功。比如:

        ClassLoader cl = new URLClassLoader(new URL[] {new URL("file:E:/xxx/src/main/java/primitive/servlet/")});
        Class<?> c = cl.loadClass("xxxServlet");

  究其原因,我们在new URL的时候,路劲应该是除了包以外的路劲,比如上面的E:/xxx/src/main/java/primitive/servlet/是我们的eclipse工作空间路劲加上包构成的完整路径,但是这样不行,而应该是E:/xxx/src/main/java/这样子,后面cl.loadClass("primitive/servlet/xxxServlet")这样带上包名的结构。所以改成如下就可以了。

        URL url = new URL("file:E:/eclipse-mars-workspace/tomcat-core/src/main/java");
        URLClassLoader cl = new URLClassLoader(new URL[] {url});
        Class<?> c = cl.loadClass("primitive.servlet.PrimitiveServlet");
    *注意:路径是以 "/"分割,而包名是以 "."分割

     Reference:http://inexus.iteye.com/blog/800188

原文地址:https://www.cnblogs.com/dreamroute/p/5776230.html