返回一個對象的結果我有一個Java函數返回一個類JNI調用Java函數中的NoSuchMethodError
public static synchronized MyClass getInstance() throws MyClassException{
if (instance == NULL){
// create
}
return instance;
}
我想通過C到調用此++代碼的單一實例,但是當我做,它返回一個NoSuchMethodError。
cls = jenv->FindClass("MyClass");
if (cls == NULL)
{
//error handling
}
mid = jenv->GetStaticMethodID(cls, "getInstance", "()LMyClass");
if (mid == NULL)
{
//error handling
}
當我運行:
javap -s -p on MyClass, I get the signature:
public static synchronized MyClass getInstance() throws MyClassException;
Signature:()LMyClass;
如果我改變函數簽名在Java類作廢,該GetStaticMethodID通話按預期工作。
我是否需要設置一個jobject以期望來自該調用的返回值?
這可能沒有先調用GetStaticMethodID?
哪裏是多數民衆贊成在返回錯誤的調用? – 2012-02-01 20:09:51
當我運行C++應用程序時,得到:線程「main」中的異常java.lang.NoSuchMethodError:getInstance – donalmg 2012-02-01 20:16:09
我想知道是否需要在調用GetStaticMethodId時指定「MyClass」的完全限定路徑。例如: jenv-> GetStaticMethodID(cls,「getInstance」,「()Lcom/work/MyClass;」); 取決於CPP代碼相對於Java代碼的位置?只是一個想法。 – eternaln00b 2012-02-01 20:19:59