したがって、JavaからCを呼び出す場合に、Cヘッダーを生成する通常の手順は理解できますが、提供する「jobject」がない場合に使用する関数呼び出しがわかりません。ここのように、私は電話しようとしていますdoSomething()
public class Test {
public void doSomething(ByteBuffer buf) {
System.out.println("Hi");
};
}
これを読みましたが、わかりません: http ://docs.oracle.com/javase/7/docs/technotes/guides/jni/spec/functions.html#wp16656
jobject buf = env->NewDirectByteBuffer(b, len);
jclass testClass;
jmethodID doSomethingMethod;
testClass = env->FindClass("test/Test");
doSomethingMethod = env->GetMethodID(testClass, "doSomething", "(Ljava/nio/ByteBuffer;)V");
env->CallVoidMethod(buf, doSomethingMethod);
「CallVoidMethod()」の最初のパラメータは何でしょうか?それは常に仕事の対象ですが、何ですか?これを実行すると、Eclipseで「UnsupportedOperationException」と表示されるだけで、何も出力されません。