Android FindClass找不到自定义Java类

Android FindClass找不到自定义Java类,android,java-native-interface,android-ndk,Android,Java Native Interface,Android Ndk,我有一个纯本地的应用程序,因为我使用android_native_app_glue,我的应用程序的入口点是 android_main(..) 我还有一个Java助手类型类: package abc.def.ghi public class MyJavaClass extends Activity { public void callback() { Log.v(TAG, "In MyJavaClass"); } } 我想从本

我有一个纯本地的应用程序,因为我使用android_native_app_glue,我的应用程序的入口点是

 android_main(..)
我还有一个Java助手类型类:

 package abc.def.ghi
 public class MyJavaClass extends Activity
 {
      public void callback() 
      {
          Log.v(TAG, "In MyJavaClass");
      }
 }
我想从本机调用“callback”方法。我这样做是通过:

jclass myClass = env->FindClass("abc/def/ghi/MyJavaClass");
if( myClass == NULL )
    LOGI("myClass null");
jmethodID mid = m_pEnv->GetMethodID(myClass, "callback", "()V");
if( mid == NULL )
    LOGI("MID null");
m_pEnv->CallVoidMethod(myClass, mid);
但是,这会导致一条消息,表明myClass为null。我的“env”指针应该可以,因为当我在FindClass中传递“android/os/build”时,它会找到它,但找不到我的自定义类

在LOGCAT中,我看到: “JNI警告:无法在Ljava/Lang/Class实例上调用Labc/def/ghi;回调;”

我想这意味着CallVoidMethod的第一个参数有问题。 我注意到在其他示例中,大多数人在一个函数中使用javah生成的签名执行CallVoidMethod,并且在
CallVoidMethod
中使用
obj
参数:

  JNIEXPORT void JNICALL function(JNIEnv *env, jobject obj, jstring s)
但是我不能使用它,因为我的应用程序的入口点是本机的

但是,这会导致一条消息,表明myClass为null。我的“env”指针应该可以,因为当我在FindClass中传递“android/os/build”时,它会找到它,但找不到我的自定义类

这表明您的自定义类不在类路径上

请注意,当您创建一个VM时,您可以传递选项,包括将类路径设置为包含当前目录(或任意位置)