2

JNIコードを使用してCPUを集中的に計算するAndroid用のアプリを開発しています。Java のネイティブ メソッドの 1 つは、ArrayList を引数として JNI レイヤーに渡します。

ArrayList の get(int index) を使用しようとすると:

jmethodID getAtIndex = env->GetMethodID(listClass, "get", "(I)Ljava/lang/Object");

私は得ています:

NoSuchMethodError: no method with name='get' signature=
'(I)Ljava/lang/Object' in class Ljava/util/ArrayList;

ただし、 javap -s java.util.ArrayList を使用してそのメソッドの署名を取得すると、JNI コードで使用している署名とまったく同じ署名が取得されます。

何か案は?前もって感謝します!!

4

2 に答える 2

4

署名が間違っています。JNI 署名を手動で作成しないでください。javap -s の出力からコピーして貼り付けます。この場合、セミコロンがありません。

于 2013-04-20T00:17:16.080 に答える