执行到GetDeviceInfo()的时候,程序跳转到Vector.class的
public synchronized int size() {
return elementCount;
}
里面,是什么问题呢?参数的数量不对?还是参数的类型不对?

解决方案 »

  1.   

    估计是你调用了Vector的size()方法,而你采用的是跟入函数的方式调试
      

  2.   

    你是不是用了Vector类或者它的子类啊 调用它不是很正常的事情么。。 把代码发上来。
    如果出错了。把错误代码发上来。
      

  3.   

    javaapi.GetDeviceInfo(sessionhandle);
    //javaapi是GetDeviceInfo函数所在的类,int sessionhandle 
    javaapi中:
            //获取设备信息--返回一个设备信息类DEVICEINFO
    public native DEVICEINFO GetDeviceInfo(int sessionhandle)//设备信息类
    class DEVICEINFO
    {
    public String IssuerName;
    public String DeviceName;
    public String DeviceSerial;
    public int DeviceVersion;
    public int StandardVersion;
    public int AsymAlgAbility[]=new int[2];
    public int SymAlgAbility;
    public int HashAlgAbility;
    public int BufferSize;
    }
    运行到这句话的时候,在DEBUG模式下,Step over ,直接跳转到ClassNoFoundException错误里面,用Step into再Step over就先跳转到Vector.class里面,也就是开始我说的函数,之后再Step over就到了ClassNoFoundException错误!
      

  4.   

    public native DEVICEINFO GetDeviceInfo(int sessionhandle)
    你确信你的C程序里返回了DEVICEINFO对象,你的C程序要通过反射的方式,调用jni的方法来创建这个对象的,估计你的C程序有问题。
    抛出异常的时候,会走到异常堆栈,获取堆栈层次的信息,估计异常堆栈是用Vector实现的,所以调用Vector的size方法了
      

  5.   

    哦,谢谢啦!刚才经理和我说这个程序本身就有问题的,我得新写一个调用。我想用哪个JNA,看了JNA的那个例子,有一些疑问,想请教你!有空吗?