小弟初学,在做一个小项目,遇到了一些问题,简单说描述如下:
在一个文本框中输入一个类的代码,保存为test.java,通过com.sun.tools.javac.Main.compile(source);将其编译为test.class,保存在项目文件夹中
现在想用 Class.forName(test);实例化一个test的对象,可抛出java.lang.ClassNotFoundException,这个应该怎么解决?谢谢大家

解决方案 »

  1.   

    你的class在classpath中么有找到. 
    有没有吧 "." 作为classpath的一部分?
      

  2.   

    有的public int compileClass() {
            String filePath = ".";
            new File(className+".class").delete();
            String[] source = { "-d", filePath, new String(className+".java") };
            return com.sun.tools.javac.Main.compile(source);
        }
      

  3.   

    这个时候是否你的classloader还没有加载这个class
    因为是在启动后才编译的.
    试试编译后在load这个class.
      

  4.   

    估计你调用Class.forName这个动作的时候,test.class还没有生成
    使用Class.forName之前先看下你项目文件夹的相对应的路径中有没有test.class
      

  5.   

    有的,在class。forname前打了个断点,查看是有test.class的,是在项目文件夹根文件夹里
      

  6.   

    后来环境变量里增加了项目文件的路径还是不行
    开发工具用的netbeans6.5
      

  7.   

    看看Test类有没有无参的构造方法?
    没有的话,加一个试试!
      

  8.   

    ClassNotFoundException--类不能被发现异常
    调试 执行到
    Class.forName(test);看看test的值是不是正确的包名类名
      

  9.   

    你可以先试用一些java专用的编译器来让它自己编译,这样可以方便编译与调试.这个问题可能是没有try/catch是吧,或者是没有在根目录中调用javaw.exe;
    比如在src文件目录中调用;
      

  10.   

    估计是你路径不对,要不你打成jar包,加到工程里面
      

  11.   

    你的Test在哪个包中,需要连包名一起compile
      

  12.   

    谢谢大家的回复,不过由于初学,小弟还想请教大家,昨天发现可能还是路径的问题 
    我的classpath包括.; 用netbeans做的,把编译出来的类文件放在项目的根目录底下ClassLoader找不到,放在项目名/src目录下就能找到,是说classpath这个.代表的当前目录指的是src这个源包的路径么?
      

  13.   

    加上test.java所在的包名,试试。我之前试过,不加包名也是报这个错