Bonjour,

j'ai un problème sous eclipse lorsque je lance mon application java. Je suis en train de tester la JNI. J'ai suivi un exemple tout marche bien sauf lorsque que je lance l'application avec Eclipse ou sous la console MS DOS Windows. Pourtant j'ai bien créé la dll pour la JNI. J'ai commencé par faire un fichier Message.java que j'ai compilé. Puis j'ai créé le header "Message.h" à l'aide de javah. Ensuite j'ai compilé le fichier "Message.c" pour créer la dll "Message.dll". Et enfin j'ai écrit, compilé et exécuté le fichier "Test.java".

Je ne savais pas trop ou mettre mon message donc je l'ai mis ici. Désolé si c'est pas au bon endroit.

Si quelqu'un peut m'aider pour ce problème, je lui en serai très reconnaissant.
Merci d'avance.

Je vous mets dans la suite du message mes fichiers sources.

Voici l'erreur que j'ai avec Eclipse :
java.lang.UnsatisfiedLinkError: afficherMessage
at Message.afficherMessage(Native Method)
at Test.main(Test.java:7)

Voici l'erreur que j'ai quand je passe sous la console :
Exception in thread "main" java.lang.UnsatisfiedLinkError: afficherMessage
at Message.afficherMessage(Native Method)
at Test.main(Test.java:7)

Message.java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
public class Message
{
	// Declaration d'une methode native
	public native void afficherMessage();
 
	// Chargement de la librairie dynamique
	static{System.loadLibrary("Message");}
 
}
Message.h :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Message */
 
#ifndef _Included_Message
#define _Included_Message
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Message
 * Method:    afficherMessage
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_Message_afficherMessage
  (JNIEnv *, jobject);
 
#ifdef __cplusplus
}
#endif
#endif
Message.c :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
#include <stdio.h>
#include "Message.h"
 
JNIEXPORT void JNICALL Java_Message_afficherMessage(JNIEnv *env, jobject obj)
{
    printf("Bonjour\n");
}
Test.java :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
public class Test
{
	public static void main(String[] args)
	{
		Message m = new Message();
		m.afficherMessage();
	}
}


[Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java