3

pthread関数でjavaメソッドを呼び出したい。

しかし、私は直面しました:

JNI_ERROR: non-VM thread making JNI calls

私は何をすべきか?

4

1 に答える 1

2

問題は、スレッドがVMに接続されていない(または適切に接続されていない)ことです。JNIブリッジを介してJavaからC++に呼び出しを行うと、呼び出しが機能しているpthreadがVMに接続されます。JNI呼び出しによって呼び出されたC++のスレッドを持つことは、控えめに言っても不安定です。おそらく行ったことは、新しいスレッドを作成し、呼び出しを行う前に、VMに接続せずにそのスレッドから呼び出しを行おうとしたことです。問題を解決するには、スレッドをVMに接続するだけでよいと思います。

したがって、Androidのヒントとコツを見ると、このテーマに関するセクションがあります。スレッドのセクションに移動すると、次のように明確に示されている部分を見ることができます。

スレッドが接続されるまで、スレッドにはJNIEnvがなく、JNI呼び出しを行うことはできません。

提供されたリンクで、問題を解決するための詳細な手順を見つけることができます。

進捗状況を投稿...

于 2012-07-17T09:56:55.593 に答える