Employee emp = (Employee)employeeList.get(i);
 for(int j=0;j<methods.length;j++){
    if(methods[j].getName().indexOf("get")==0){
          Object m=methods[j].invoke(emp);
              
    }
}
这段代码放在java文件中,怎么我直接写main函数运行是好的,但是放在tomcat下通过jsp调用就报错:
StandardWrapperValve[jsp]: Servlet.service() for servlet jsp threw exception
java.lang.IllegalArgumentException: object is not an instance of declaring class了呢,
报错就在Object m=methods[j].invoke(emp);这一行

解决方案 »

  1.   

    Employee emp = (Employee)employeeList.get(i); 
    for(int j=0;j <methods.length;j++){ 
        if(methods[j].getName().indexOf("get")==0){ 
             System.out.prinltn(methods[j].getDeclaringClass()); 
             System.out.prinltn(emp.getClass()); 
               Object m=methods[j].invoke(emp); 
                
        } 
    } 加上红色 调试信息 看看 是不是同一个类
     
      

  2.   

    你的methods是怎么来的?贴下代码。
      

  3.   

    你的get方法是不是静态方法?
      

  4.   

    Employee  这个类难道被你定义了两次吗 一个在默认包里面一个有包名 把默认包那个Employee类去掉算了 不推荐使用没有包的类