晕,特简单的代码,就是过不了,各位大虾救命啊!!!
错误信息:
public void Test1.test1(java.lang.String,java.lang.String)
java.lang.IllegalArgumentException: object is not an instance of declaring class
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at Test1.main(Test1.java:18)源代码如下:
import java.lang.reflect.Method;
public class Test1 { /**
 * @param args
 */
public static void main(String[] args) {
// TODO Auto-generated method stub
   Class svclass;
   Method svmethod;
  try{
       svclass=Class.forName("Test1");
       svmethod=svclass.getMethod("test1", new Class[] {String.class,String.class});
       System.out.println(svmethod.toGenericString());
       svmethod.invoke(svclass,new Object[]{"a","b"});
  }catch(Exception e){e.printStackTrace();}
}
public void test1(String a,String b)
{
System.out.println("test1 >>"+a+","+b);
}
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【langzitianya】截止到2008-07-20 20:08:11的历史汇总数据(不包括此帖):
    发帖的总数量:1                        发帖的总分数:100                      每贴平均分数:100                      
    回帖的总数量:2                        得分贴总数量:0                        回帖的得分率:0%                       
    结贴的总数量:1                        结贴的总分数:100                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!
      

  2.   

    你没newInstance()
    你调的方法不是静态方法,所以method的invoke是要和对象绑定的
      

  3.   

    自己反射自己啊,不行吧
    你把Test1编译了,然后再建一个类Test2反射调用Test1,试试看
      

  4.   


    import java.lang.reflect.Method;public class Test1
    {
        public static void main(String[] args)
        {
            Class svclass;
            Method svmethod;        try
            {
                svclass = Class.forName("craky.cmd.temp.Test1");
                svmethod = svclass.getMethod("test1", new Class[]{String.class, String.class});
                System.out.println(svmethod.toGenericString());            // svclass是一个Class对象,而不是Test1对象,所以不能放在这里
                // svmethod.invoke(svclass, new Object[]{"a", "b"});
                svmethod.invoke(new Test1(), new Object[]{"a", "b"});
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }    public void test1(String a, String b)
        {
            System.out.println("test1 >>" + a + "," + b);
        }
    }
      

  5.   

    Object sv = svclass.netInstance();
    svmethod.invoke(sv, new Object[]{"a","b"});