4

我对 JNI 很陌生,我正在努力解决这个问题。

我有一个由网络库 (alljoyn) 调用的 c++ 回调。

在这个回调中,我需要调用 Java 代码。

由于此回调位于另一个线程中,因此我使用以下代码获取 JNIEnv 指针:

(jvm 是一个全局指针)

JNIEnv *env = NULL;  
jvm->AttachCurrentThread(&env, NULL);

问题是,当我尝试使用这个 env 指针调用 FindClass 时,结果为 NULL。

如果我在我的主线程中执行完全相同的 FindClass 调用,那么一切正常。

我怎样才能解决这个问题 ?这是否与类路径有关?

4

1 回答 1

3

答案和官方解决方法可以在developer.android上找到。如果您必须超越对本机代码可能需要的所有类的预缓存全局引用,您将在此处找到一个缓存正确类加载器的成功解决方案:FindClass from any thread in Android JNI

于 2013-07-06T12:36:39.443 回答