[JNA] Erreur lors du chargement de la librairie [Résolu]

Messages postés
14
Date d'inscription
jeudi 14 avril 2011
Dernière intervention
31 mai 2011
- - Dernière réponse : lac981
Messages postés
14
Date d'inscription
jeudi 14 avril 2011
Dernière intervention
31 mai 2011
- 18 mai 2011 à 18:26
Bonjour,

Je post ici car j'ai un petit problème avec JNA (Java Native Access), après avoir suivis un tutoriel pour charger une librairie je suis arrivé à ces deux fichiers la :

import com.sun.jna.Library; 

public interface Lib extends Library
{

}


Que j'utilise ici

System.setProperty("jna.library.path", System.getProperty("user.dir")+File.separator+"dll");
System.out.println(System.getProperty("jna.library.path"));
Lib p = (Lib) Native.loadLibrary("hrmcom", Lib.class);


Comme vous le voyer j'ai essayé de modifier le jna.library.path, qui contient bien le chemin vers la dll, j'ai également ajouter le chemin vers la dll à la variable d'environnement PATH mais rien n'y fait je tombe toujours sur cette erreur :

Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Unable to load library 'hrmcom': Le module spécifié est introuvable.

at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:163)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:236)
at com.sun.jna.Library$Handler.(Library.java:140)
at com.sun.jna.Native.loadLibrary(Native.java:379)
at com.sun.jna.Native.loadLibrary(Native.java:364)

Par contre si je mets ma DLL dans le dossier Windows\system32\ là ça veut bien charger la librairie.

Si vous avez déjà rencontré le problème ou si vous avez une idée de ce qui a pu se passer, j'attends vos réponses...
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Messages postés
5307
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
14 décembre 2018
3
Merci
Salut,


Bon bah je n'ai aucun pb de load sur mon pc de test...
config:
OS: Windows 7 64bits
JVM: build 1.6.0_24-b07 32bits

Projet:
Nom: plop
dedans il y a 3 répertoires et 2 fichiers:
- src avec dedans 1 classe et 1 interface:
import java.io.File;

import javax.swing.JOptionPane;

import com.sun.jna.Native;

public class Test {

public static void main(final String[] args) {
final StringBuilder message =  new StringBuilder();
System.setProperty("jna.library.path", System.getProperty("user.dir") + File.separator + "lib");
message.append("jna.library.path:").append(System.getProperty("jna.library.path"));

final Lib p = (Lib) Native.loadLibrary("hrmcom", Lib.class);
message.append("\nLib:").append(p);

JOptionPane.showMessageDialog(null, message.toString(), "Info",
JOptionPane.INFORMATION_MESSAGE);
}
}

import com.sun.jna.Library;

public interface Lib extends Library {

}


- bin avec dedans les classes compilées.
- lib avec dedans les jar jna + la dll
[list]
[*] jna.jar
[*] platform.jar
[*] hrmcom.dll
/list

- le jar de l'application qui se nomme plop.jar
- un fichier build.xml pour la compilation et la création du jar
<?xml version ="1.0" encoding="UTF-8"?>

<target name="build">
<delete file="plop.jar"/>
<javac classpath="bin;./lib/jna.jar:./lib/platform.jar" srcdir="src" destdir="bin" />
<jar jarfile="plop.jar" basedir="./bin">
<manifest>


</manifest>
</jar>
</target>






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

OoWORAoO

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de Twinuts
Messages postés
5307
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
14 décembre 2018
3
Merci
Salut,

bah sous eclipse... clic droit sur le fichier build.xml et "Run As" -> "Ant build" ...
je ne sais pas pourquoi ça ne fonctionne pas chez toi... ta version de jvm ?
Le Windows 7 d'hier est un Windows 7 64bits classique... avec un jdk 6 32bits + eclipse 32bits...
Le Windows XP d'aujourd'hui est un XP pro fraîchement installé avec un jdk 6 32 bits + eclipse 32 bits (fraîchement installé aussi)...
Je viens également de faire le test sur le pc d'un collègue (Vista 32bits + jre 6 + le zip que je t'ai envoyé) et quand je double clic sur le jar j'ai bien le JOptionPane qui s'ouvre avec tout qui va bien dedans...



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

OoWORAoO

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de Twinuts
Messages postés
5307
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
14 décembre 2018
0
Merci
Salut,


Tu as essayé (à la place de System.setProperty) de passer l'option au démarrage de la jvm ?
exemple:
java -Djna.library.path="/chemin/vers/la/lib" -jar ton_jar_de_ton_application.jar




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

OoWORAoO
Commenter la réponse de Twinuts
Messages postés
14
Date d'inscription
jeudi 14 avril 2011
Dernière intervention
31 mai 2011
0
Merci
Bonjour,

Tout d'abord je te remercie pour ta réponse. J'ai essayé avec ta ligne de commande mais rien n'y fait.

Le probleme c'est que même en mettant ma DLL dans 'Windows\system32' il me sort toujours la même exception. J'ai fais pas mal de posts sur différents forums ou les personnes avaient le même problème que moi mais les manipulations recommandées non rien changer au problème.

D'ou ma question ma DLL est-elle bien compatible ? Comment le savoir ?

Vous pourrez trouver la DLL à cette adresse.

D'avance Merci.
Commenter la réponse de lac981
Messages postés
5307
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
14 décembre 2018
0
Merci
Salut,

Je ne pense pas que le pb soit dans la dll ici tu as une erreur de load... une petite question, ton OS est un OS 32bits ? ou 64bits ? dans le cas d'un OS 64 :
- La JVM est en 32 ou 64 (je sais même pas si la jvm 64 existe pour windows) ?
- Le LD PATH sous 64 est dans je sais plus quoi 64 et non dans system32

Sinon je regarderai sur un de mes PC windows ce soir pour voir.


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

OoWORAoO
Commenter la réponse de Twinuts
Messages postés
14
Date d'inscription
jeudi 14 avril 2011
Dernière intervention
31 mai 2011
0
Merci
Bonjour,

C'est vrai qu'il est possible qu'il y est des interférences entre mon système 64 et la jvm. Pourtant pour voir comment fonctionnait JNA j'ai suivis un tuto ou il fallait chargé un fichier contenu dans system32 : msvcrt.dll, mais c'est vrai qu'il est aussi présent dans sysWOW64, après avoir vu ça j'ai mis ma dll dans ce dossier mais elle ne charge toujours pas.

En tout cas merci, j'attends ton message de ce soir.

A+
Commenter la réponse de lac981
Messages postés
5307
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
14 décembre 2018
0
Merci
Re,

le choix du répertoire lib avec la dll et les jar dedans est volontaire, personnellement je ne supporte pas les applications qui vont installer je ne sais trop quoi pour pourrir un système... du coup je m'arrange toujours pour que les fichiers restent dans le répertoire de mon application.



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

OoWORAoO
Commenter la réponse de Twinuts
Messages postés
14
Date d'inscription
jeudi 14 avril 2011
Dernière intervention
31 mai 2011
0
Merci
Bonjour,

Déjà merci beaucoup d'avoir pris le temps de me répondre et de faire ce test.
Alors là vraiment je ne comprends j'ai créé un nouveau projet, dans laquelle j'ai mis la même arborescence, avec le même contenu pour les fichiers mais lorsque que j’exécute mon jar j'ai toujours cette erreur, de plus Eclipse ne semble pas prendre en compte le fichier Build.xml. J'ai également fais ce projet avec NetBeans mais toujours le même problème. Si tu pouvais m'envoyer une archive de ton projet que je puisse voir comment il est fait en dernier recours. En tout cas je ne sais vraiment pas ce qui peut foirer.

Encore Merci.

A+
Commenter la réponse de lac981
Messages postés
5307
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
14 décembre 2018
0
Merci
Salut,

ok, ok, déjà supprime les lib hrmcom de ton système, ensuite passe par ma bal CS pour m'envoyer ton adresse mail que je puisse te passer l'archive (pas avant ce soir par contre).

Au passage c'est pas Build.xml mais build.xml



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

OoWORAoO
Commenter la réponse de Twinuts
Messages postés
14
Date d'inscription
jeudi 14 avril 2011
Dernière intervention
31 mai 2011
0
Merci
Re,

Oui je les avais supprimées.
Je t'ai envoyé mon adresse, merci.
Commenter la réponse de lac981
Messages postés
5307
Date d'inscription
dimanche 4 mai 2003
Dernière intervention
14 décembre 2018
0
Merci
Salut,

Je viens d'envoyer le projet sur ton mail.
Je l'ai également testé sous Windows XP en vmware




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

OoWORAoO
Commenter la réponse de Twinuts
Messages postés
14
Date d'inscription
jeudi 14 avril 2011
Dernière intervention
31 mai 2011
0
Merci
Bonjour,

Aussi incroyable que ça puisse l'être ça ne fonctionne pas ni sur mon pc ni sur celui de mon collègue. Je ne vois pas d'ou viens le problème, comment génère tu ton jar ? en ligne de commande ? si oui laquelle ?

Encore Merci.

A+
Commenter la réponse de lac981
Messages postés
14
Date d'inscription
jeudi 14 avril 2011
Dernière intervention
31 mai 2011
0
Merci
Re,

Je te remercie infiniment, je ne compilais tout simplement pas comme cela.

Merci du temps que tu as pris pour m'aider.

Bonne continuation.

A+
Commenter la réponse de lac981

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.