[JNI] appel d'une méthode java depuis le code natif
Bonjour,
Encore une question du boulet qui capte rien au JNI... et pourtant c'est pas faute de chercher !
Bon alors voila, je veux simplement executer des méthodes d'une classe java depuis du C. D'après les exemples trouvés sur internet, çà à pas l'air bien méchant, seul problème, çà marche pô ! :cry:
Extrait de ma classe java:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
class CLIST_S{
void afficher(){
int size = liste.size();
System.out.println("Taille de la liste = " + size);
Iterator<String> it = liste.iterator();
while(it.hasNext()){
System.out.print("'" + it.next() + "' ");
}
System.out.print("\n");
}
} |
Extrait du code natif en C :
Code:
1 2 3 4 5 6 7
|
JNIEXPORT void JNICALL Java_Main_native_1methode(JNIEnv * env, jobject obj, jobjectArray l){
jclass cls = (*env)->GetObjectClass(env,obj);
jmethodID mid = (*env)->GetMethodID(env,cls, "afficher", "()V");
(*env)->CallVoidMethod(env,obj, mid);
} |
Et donc, çà compile et çà plante à l'execution -> "EXCEPTION_ACCESS_VIOLATION" et tout le tralala...
Je comprends pas, çà ressemble enormément aux exemples du livre sur le jni que j'ai téléchargé sur le site de sun...
Merci d'avance de votre aide.
Problème de compréhension
Bonjour à vous deux, je m'excuse à l'avance de poser une telle question, mais...
De quelle manière appelles-tu le code que tu as écris dans ta Jni ?
Est-ce du code que tu appelles dans Java, en important le fichier dans lequel tu as la classe CLIST_S, ?
Ou bien...
Est-ce du code que tu appelles à partir d'un programme C++ (ou C), en incluant le fichier .H de ta Jni et en l'utilisant par exemple dans un main ?