J'essaie d'accéder au message dans un jthrowable tout en gérant une exception générée lorsque je ne parviens pas à trouver une classe. Cependant, je ne parviens pas à accéder à l'ID du message de getMessage() sur l'objet jthrowable, et je ne sais pas pourquoi. J'ai essayé de changer la signature de getMessage en "()Ljava/lang/String" (sans le point-virgule à la fin, mais c'est nécessaire, non ?) sans succès. Je suis très confus à ce sujet. J'ai même essayé de remplacer getMessage par toString, et que n'a pas fonctionné. Il est évident que je fais quelque chose de trivialement mauvais ici.
Voici le code que j'utilise :
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;
}
La sortie de ce code (entre autres choses) ressemble à ceci :
Sérieusement, comment je fais pour arriver ici ? !
Exception dans le thread "main" java.lang.NoClassDefFoundError : com/planet/core360/docgen/Processor
javap -p -s java.lang.Throwable
me donne ça :
Compilé à partir de "Throwable.java".
public class java.lang.Throwable extends java.lang.Object implements java.io.Serializable{
...
public java.lang.String getMessage() ;
Signature : ()Ljava/lang/String ;
...