我用URLClassLoader类来动态加载一个jar文件,如何能够返回这个jar文件中所包含的所有类的类名?

解决方案 »

  1.   

    try {
                ZipFile zf = new ZipFile("test.jar");
                // Enumerate each entry
                for (Enumeration entries = zf.entries(); entries.hasMoreElements();) {
                    // Get the entry name
                    String zipEntryName = ((ZipEntry)entries.nextElement()).getName();
                    System.out.println(zipEntryName);//根据文件扩展名判断,注意内部类的判断
                }
            } catch (IOException e) {
            }
      

  2.   

    如何处理内部类和匿名类呢?有什么规律吗?
    -----------------
    一试便知,$,巧的是所有jvm都遵守这个命名规则。
      

  3.   

    通过ZipFile方法,我只能获得类的名称,但是不知道该类在那个包下,这样还是不能够动态载入
      

  4.   

    > 通过ZipFile方法,我只能获得类的名称,但是不知道该类在那个包下,这样还是不能够动态载入ZIP 文件中 class 文件的路径就是它的包。
      

  5.   

    > 如何能够判断一个文件是类还是接口?如果是在类加载之后判断,可以用反射。如果想在类加载之前判断,那就自己解析 class 文件的 bytecode 吧,有标志的。