java - JNI : Unable to find java class from native method in a callback

标签 java android java-native-interface

我是 JNI 的新手,我正在努力解决这个问题。

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

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

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

(jvm 是一个全局指针)

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

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

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

我该如何解决这个问题?这与类路径有某种关系吗?

最佳答案

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

关于java - JNI : Unable to find java class from native method in a callback,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17501948/

相关文章:

java - JNI 调用与常规 Java 调用交错 - 执行顺序是什么?

java - Tomcat 中的应用程序没有响应

java - 如何在 Android Studio 上加载 libgdx 项目中的文件?

android - 在 Android 通知中实现贪睡

java - 如何在android中加密和解密给定的编辑文本值?

android - 如何通过 JNI 正确地将 YUV_420_888 图像缓冲区从 Java 传递到 OpenCV,考虑步幅/填充

java - 使用捆绑资源创建 JavaVM

java - 检测用户正在从 View 页面中的 fragment 上滑开

java - 在 Jackson Custom Deserializer 中读取跳过的 child

java - 安卓图片加载