如题,那位大哥帮帮忙,小弟非常感激。

解决方案 »

  1.   

    读jar文件, File.list() 得到文件名, 取.class文件,需要加载哪个class文件.比如"com.test.Test.class", 在程序中用如下语句:Object o = Class.forName("com.test.Test").newInstance();
    这个o就是你所需要的东西了, 然后Class c = o.getClass();
    得到c后再查查JDK文档,看看你到底是想要调用它的方法呢,还是要取得它的属性值. 调用相应的方法即可
      

  2.   

    jar文件没有在我的classpath目录,这样好像不行吧。
      

  3.   

    可以, 在执行java 命令时, 加上 -cp jar文件目录
      

  4.   

    楼上的这种做法是肯定不行的,不在classpath中,你在命令中加,那就不符合题目要求了,是要完全动态选择一个jar文件,这种我没有写过,不知道怎么解决。
      

  5.   

    不知道是否可以试试这种方法,选择一个文件后,将文件复制到classpath中,然后在进行读取文件。
      

  6.   

    String jarfile = "file:///C:/Something.jar";
    String classname = "some.clazz";
    URLClassLoader cl = new URLClassLoader(new URL[] { new URL(jarfile) });
    Class clz = cl.loadClass(classname);
    System.out.println(clz.getName());
    ...
      

  7.   

    楼上的方法是可以,但是如果我想读取类里面的Method和Field的话,有些就会出错,有些不出错,我觉得原因是有些方法调用了没有引用进来的包,对不对。
      

  8.   

    http://blog.csdn.net/treeroot/archive/2006/03/21/631490.aspx
    ClassLoaderUtil.addClassPath("C:/Something.jar);
      

  9.   

    怎么觉得好像我回过这篇文章写一个最简单的ClassLoader
    class SimpleLoader extends ClassLoader{
             /** 创建一个指定的类
              * @param className 类的全称,如:  hermit.math.Operator
              * @param classPath jar包所在的路径,如:  d:/hermit.jar
              */
    public Class findClass(String className,String classPath) throws 
                    ClassNotFoundException{
    ClassPath cp = new ClassPath(classPath);
    byte[] b = null;
    try{
    b = cp.getBytes(className);
    }catch(Exception e){
    throw new ClassNotFoundException();
    }
    return defineClass(className,b,0,b.length);
    }
    }然后SimpleLoader loader = new SimpleLoader();
    Class classanyway = loader.findClass('yourclassname','yourjarfilepath');
    就可以得到一个类对象了
      

  10.   

    LexChen(阿修罗),ClassPath对象是什么呀。
      

  11.   

    To LexChen(阿修罗) :
    如果该类有父类就会出问题~