我在用this.getClass().getClassLoader().loadClass("classname")动态加载一个类,起初没有问题,一切正常.不过第二天我把web-info中的那个类删掉了,为了试验其他功能,然后考回去以后就出错了,从新build工程也不起作用.一到这行就报一个 java.lang.NoClassDefFoundError:com/......
具郁闷... 哪个高人给点意见吧

解决方案 »

  1.   

    结构是这样的,包A中有一个接口interface, 需要加载的类classA是implements这个接口的.当我load那个class就回出这个错, 刚才我试了试,不去load他,而是直接interface iface = new classA.也会出这个error.. 而且他报的NoClassDefFoundError后面也是说那个接口,而不是要加载的类.整一下午了,晕... 接口,被加载的类,加载他们的类,他们是放在三个不同的包中的.我快不行了...
      

  2.   

    疯了,我把用到那个接口的地方都去掉了,连那个接口的包都删了,能想到的classes都是从新build的,居然好报那个错,哭...还是在new那个原来实现那个接口的类的位置报,可是他现在已经 不是实现那个接口的了...
      

  3.   

    500 Servlet Exception
    java.lang.NoClassDefFoundError: com/mywork/importinterface/UserInterface
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:242)
    at com.caucho.util.DynamicClassLoader.loadClass(DynamicClassLoader.java:500)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:242)
    at com.caucho.util.DynamicClassLoader.loadClass(DynamicClassLoader.java:500)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:242)
    at com.caucho.util.DynamicClassLoader.loadClass(DynamicClassLoader.java:500)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
    at com.mywork.dataimport.ImportUser.<init>(ImportUser.java:17)
    at com.mywork.dataimport.ImportPeer.importData(ImportPeer.java:19)
    at _plugin_0operate__jsp._jspService(E:\works\mywork\plugin_operate.jsp:16)
    at com.caucho.jsp.JavaPage.service(JavaPage.java:75)
    at com.caucho.jsp.Page.subservice(Page.java:506)
    at com.caucho.server.http.FilterChainPage.doFilter(FilterChainPage.java:182)
    at com.caucho.server.http.Invocation.service(Invocation.java:315)
    at com.caucho.server.http.CacheInvocation.service(CacheInvocation.java:135)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:246)
    at com.caucho.server.http.HttpRequest.handleConnection(HttpRequest.java:163)
    at com.caucho.server.TcpConnection.run(TcpConnection.java:139)
    at java.lang.Thread.run(Thread.java:595)
    --------------------------------------------------------------------------------
    Resin 2.1.11 (built Mon Sep 8 09:36:19 PDT 2003)
      

  4.   

    呵呵 重写类是要重启服务器的
    你的所有class都要重新编译 生成
    把生成的class拷贝到服务器
    然后启动服务器
      

  5.   

    又开始上班了,不过还是没解决这个问题,看来要苦战了...可能不是程序的问题,也可能是jdk或者resin的问题吧,我把程序考到别的机器上就ok的.....
      

  6.   

    com/mywork/importinterface/UserInterfaceUserInterface 是个接口吧! 接口是不能实例化的.必须是一个可以 new 创建的类
      

  7.   

    问题是解决了,不过很奇怪,我从新考了一个份resin,然后从新配置了一边就ok了,郁闷的问题