मैं कक्षा को खोजने में असफल होने पर उत्पन्न अपवाद को संभालने के दौरान एक jthrowable में संदेश तक पहुंचने का प्रयास कर रहा हूं। हालांकि, मैं jthrowable ऑब्जेक्ट पर getMessage() की संदेश आईडी तक पहुंचने में असमर्थ हूं, और मुझे नहीं पता कि क्यों। मैंने getMessage के हस्ताक्षर को बदलने के लिए कोशिश की है (") Ljava/lang/स्ट्रिंग" (अंत में अर्धविराम के बिना, लेकिन यह जरूरी है, है ना?) कोई खुशी नहीं है। मैं इसके बारे में नरक के रूप में उलझन में हूँ। मैंने getString के साथ getMessage को बदलने की कोशिश की, और कि काम नहीं किया। जाहिर है, मैं यहां कुछ मामूली गलत कर रहा हूं।मेरा जेएनआई कोड सफलतापूर्वक एक jthrowable की getMessage विधि क्यों नहीं ढूंढता है?
यहाँ कोड मैं का उपयोग कर रहा है:
jthrowable java_exception;
jclass java_class;
jmethodID method;
java_exception = (*jEnv)->ExceptionOccurred(jEnv);
assert (java_exception != NULL);
java_class = (*jEnv)->GetObjectClass (jEnv, java_exception);
assert (java_class != NULL);
method = (*jEnv)->GetMethodID (jEnv, java_class, "getMessage", "()Ljava/lang/String;");
if (method == NULL) {
printf ("Seriously, how do I get here?!\n");
(*jEnv)->ExceptionDescribe (jEnv);
return;
}
इस कोड (अन्य बातों के साथ) के उत्पादन में इस तरह दिखता है:
:Compiled from "Throwable.java"
public class java.lang.Throwable extends java.lang.Object implements java.io.Serializable{
...
public java.lang.String getMessage();
Signature:()Ljava/lang/String;
...
Seriously, how do I get here?!
Exception in thread "main" java.lang.NoClassDefFoundError: com/planet/core360/docgen/Processor
javap -p -s java.lang.Throwable
मुझे इस देता है
इससे मेरी मदद की! :-) –
क्या यह संभव है कि अपवाद सक्रिय होने पर GetObjectClass() काम नहीं करता है? GetObjectClass को कॉल करने से पहले '(* env) -> अपवाद क्लीयर (env) 'आज़माएं। – Qwertie