0

私の目標は、C++ から呼び出されるメソッドを実装する Java クラスの魔女を構築することです。このメソッドは、同じクラス内の別の Java メソッドの名前を取得します。Java-reflection API を介して、それへの参照を取得したい (後で呼び出したい)。

しかし、C++ から呼び出されたメソッドは、他の Java メソッドを見つけられません。Java から実行する場合は正常に動作します。何が恋しいですか?

ジャワ:

public void myCPlusPlusFunc(String method){ // I'll pass "noparam" in here
    logMessage("Searching for method " + method + "....");
    for (Method m : this.getClass().getMethods()) {
        if (method == m.getName()) {
            logMessage("Found it!"); // never found when called through JNI/C++
            // (...) invoke the method etc...
        }
    }
}

public void noparam() {
    logMessage("noparam got called");
}

C++

JNIEnv *env = theJVMLoader->getENV();
jmethodID m = env->GetMethodID(getBeanClass(), "myCPlusPlusFunc", "(Ljava/lang/String;)V");
if (env->ExceptionCheck()) {    
    handleException();
    ASSERT(FALSE);
    return FALSE;
}
ASSERT(m);
if (m)
{
    // "noparam" is the method i expect to find
    jstring s = env->NewStringUTF("noparam"); 
    env->CallVoidMethod(getBeanInstance(), m, s);
}
4

1 に答える 1

2

jni の文字列を等値 == 演算子と比較できるかどうかはわかりません。それ以外の

if (method == m.getName())

試してみてください

if (m.getName().equals(method))

そこの

于 2013-09-26T14:57:49.400 に答える