3

我想在 pthread 函数中调用 java 方法。

但我面临:

JNI_ERROR: non-VM thread making JNI calls

我应该怎么办?

4

1 回答 1

2

问题是您的线程未连接(或不正确)到 VM。当您通过 JNI 桥从 Java 调用 C++ 时,您的调用正在处理的 pthread 将附加到 vm。在 C++ 中拥有由 JNI 调用调用的线程至少可以说是不稳定的。您可能所做的是创建一个新线程并尝试从它进行调用而不在调用之前将其附加到 VM。我认为要解决您的问题,您应该将线程附加到 VM。

因此,如果您看到Android 提示和技巧,则有一个关于该主题的部分如果您转到线程部分,您可以看到他们清楚地说明的部分:

在附加线程之前,它没有 JNIEnv,并且无法进行 JNI 调用。

您可以在提供的链接中找到解决问题的详细步骤。

发表你的进展...

于 2012-07-17T09:56:55.593 回答