Utilisation de JNI [Résolu]

wilkom2009
Messages postés
50
Date d'inscription
jeudi 8 avril 2010
Dernière intervention
7 août 2012
- 19 avril 2011 à 11:15 - Dernière réponse : Twinuts
Messages postés
5292
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
12 novembre 2018
- 21 avril 2011 à 18:00
Salut,
Je voudrais faire une interaction entre code java et code C++. Suite aux recherches je suis tombé sur le JNI. Mais j'avoue que mes premiers tests me sont difficiles. D'abord, en lisant les tuto, on parle de bibliothèque à charger, mais je ne sais pas s'il s'agit des bibliothèques prédéfinies en java ou des bibliothèques que je crée moi-même, voici le code suivant:
++++++++++++++++++++++
class TestJNI1 {
public native void afficherBonjour();
static {
System.loadLibrary("mabibjni");
}

public static void main(String[] args) {
new TestJNI1().afficherBonjour();
}
}
+++++++++++++++++++++++++++++
Question1: le paramètre "mabibjni" est-il dans les bibliothèques prédéfines de java ou juste crée après la compilation de TestJNI1?
Question2: Lorsque j'exécute cette classe, j'ai le message d'erreur suivant:
(((((java.lang.UnsatisfiedLinkError: no mabibjni in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at TestJNI1.<clinit>(TestJNI1.java:4)
Exception in thread "main" ))))), qu'est-ce qui ne va pas? Voudriez-vous m'expliquer un peu le principe de JNI? Je bosse avec Eclipe et JRE6.

Merci, et excusez-moi pour ces questions un peu "terre à terre".
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Twinuts
Messages postés
5292
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
12 novembre 2018
- 21 avril 2011 à 18:00
3
Merci
Re,



-----------------------------------------
Je ne suis pas en train de chercher des codes sources cuits, juste comment procéder à une exécution d'un programme test et le reste dépendra de moi. Merci pour votre compréhension.


Ha nan mais ma signature n'est pas adressée à ce poste hein


------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO

Merci Twinuts 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de Twinuts
Twinuts
Messages postés
5292
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
12 novembre 2018
- 21 avril 2011 à 14:20
0
Merci
Salut,

Réponse 1: malibjni DOIT etre ta lib native (dll ou so)
Réponse 2: oui il faut l'ajouter au LD path pour que java puisse la charger... soit tu places ta lib dans le path de ton OS soit au lancement de ton application tu passe la bonne option à java.
Soit ici je parts du principe que ton application est dans un jar appelé monjar.jar et que ta lib est dans le répertoire courant :
java -Djava.library.path=. -jar monjar.jar

Cela dit si tu n'es pas dans tes baskettes quand à l'utilisation de JNI et surtout des conceptes de chargement de libs en C/C++ (ce qui semble être le cas ici) je te conseil plus d'oublier JNI et de passer par JNA qui te permet de faire du code natif sans passer par du C/C++


------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Commenter la réponse de Twinuts
wilkom2009
Messages postés
50
Date d'inscription
jeudi 8 avril 2010
Dernière intervention
7 août 2012
- 21 avril 2011 à 17:54
0
Merci
Salut!
Merci Twinuts, j'ai configuré la variable d'environnement et tout se passe bien, j'ai compilé le code java jusqu'à créer le fichier .h, maintenant j'ai encore un autre problème: c'est l'exécution de la ligne de commande:
[gcc -I "%JAVA_HOME%\include" -I"%JAVA_HOME\include\Win32%" -o TestJNI.o TestJNI.c]
pour compiler le fichier TestJNI.c que j'ai crée en C.
L'exécution de cette commande sous DOS me signale que gcc n'est pas une commande Windows valide.
Que faut-il faire?

Merci.

-----------------------------------------
Je ne suis pas en train de chercher des codes sources cuits, juste comment procéder à une exécution d'un programme test et le reste dépendra de moi. Merci pour votre compréhension.
Commenter la réponse de wilkom2009
Twinuts
Messages postés
5292
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
12 novembre 2018
- 21 avril 2011 à 17:59
0
Merci
Salut,

si tu es sous windows passe par M$ Visual (la version gratis fait bien l'affaire) ou par un autre ide, tu te prendras 100000000000000 fois moins la tête...

GCC est un compilateur GNU qui n'est pas natif Windows et il me semble même qu'il n'est pas dispo sans passer par des applications annexes




------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
Commenter la réponse de Twinuts

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.