我在机器随便的一个地方有一个
Class文件。
比如:E:/abc/a/b/c/MyClass.class
它的全名是a.b.c.MyClass
请问我怎么在我的程序里得到MyClass的对象啊。
我的程序的地址比如说是在:D:/workspace/test/Test.class前提只能用java代码实现,因为一切都是动态的。

解决方案 »

  1.   

    是不是只知道class的类名而不知道本地存放的路径,这样是否可通过查找实现,
    如果路径和类名都不知道那就只能JNDI了
      

  2.   

    最好用反射API,如果是这样的话最好看看孙鑫JAVA视频第多少集我不记得了,
      

  3.   

    Object o=Class.forName("类路径").newInstrance();
    在强转
      

  4.   

    楼上说的不对。
    Class.forName("classname").newInstance()
    现在的问题是这个"classname"的内容是没有被配置在classpath中的。
    就是说你这么写不对Class.forName("a.b.c.MyClass").newInstance()
    因为文件在E:/abc文件夹中。但是classpath当然不知道他的存在了。
    怎么在java程序中动态的完成。类的加载。
    可以从计算机包括网络上得到对象。
      

  5.   

    好像可以动态修改classpath的
    动态修改之后,再用Class.forName来加载
      

  6.   

    自己写一个ClassLoader就可以解决
      

  7.   

    自定义一个ClassLoader,重载里面的findClass()方法,在其中用访问文件的方法获得这个class文件的字节数组,最后用defineClass()生成对应的java对象并返回.
      

  8.   

    用java.net.URLClassLoader动态载入。
      

  9.   

    String classpath=System.getProperty("java.class.path");
    classpath+=指定新的class根路径(比如某个jar或者目录);
    System.getProperties().put("java.class.path",classpath);Class.forName(...);