में एक वस्तु परिणाम देने मैं एक जावा समारोह जो एक कक्षाJNI जावा समारोह के लिए कॉल NoSuchMethodError
public static synchronized MyClass getInstance() throws MyClassException{
if (instance == NULL){
// create
}
return instance;
}
मैं सी के माध्यम से इस कॉल करना चाहते हैं ++ कोड की एक सिंगलटन उदाहरण देता है, लेकिन जब मैं करते हैं, यह रिटर्न एक 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;
अगर मैं समारोह हस्ताक्षर जावा वर्ग में शून्य करने के लिए बदलने के लिए, GetStaticMethodID कॉल अपेक्षा के अनुरूप काम करता है।
क्या मुझे कॉल से वापसी मूल्य की अपेक्षा करने के लिए नौकरी निर्धारित करने की आवश्यकता है?
क्या यह पहले GetStaticMethodID को कॉल किए बिना संभव है?
कॉल कहां त्रुटि दे रहा है? –
जब मैं सी ++ ऐप चलाता हूं, तो मुझे मिलता है: थ्रेड में अपवाद "मुख्य" java.lang.No.SuchMethodError: getInstance – donalmg
मुझे आश्चर्य है कि आपको GetStaticMethodId पर कॉल में "MyClass" के पूर्ण योग्यता वाले पथ को निर्दिष्ट करने की आवश्यकता है या नहीं। उदाहरण के लिए: जेएनवी-> GetStaticMethodID (cls, "getInstance", "() Lcom/work/MyClass;"); सीपीपी कोड जावा कोड के सापेक्ष कहां रहता है इस पर निर्भर करता है? सिर्फ एक विचार। मेरे मूल प्रश्न में – eternaln00b