找到答案了,是加
$(内部类名)env->FindClass("test/Test$TestInner")

解决方案 »

  1.   

    env->FindClass("test.test$TestInner")
      

  2.   

    楼上错了,是.要用/表示:
    env->FindClass("test/Test$TestInner")
      

  3.   

    我一直不搞明白,在c里调用java做什么?哪位说一说
      

  4.   

    如果有一段逻辑在Java中的调用很多,你会在Java里定义一个方法或类,而在JNI的c里要用到它的处理结果,难道你在C里把这段逻辑再写一边吗?
      

  5.   

    明白了,那样的话是不是得在c的程序里调用JNI_CreateJavaVM() ,产生一个新的虚拟机,这样的话不是很费内存吗?
    还是我理解的不对?
      

  6.   

    不需要调用JNI_CreateJavaVM。
    FindClass 得到 jclass 之后,就可以调用它的静态方法,
    如果能得到该类的对象实例的话,还可以操作它。
    所有这些调用均是在同一个虚拟机中进行的,和进入你的 JNI 的虚拟机是同一个。
      

  7.   

    但findclass这里找到的方法必须得是加载c这个dll的类,是吧?我试了别的类出错!