Bonjour,
Tout d'abord, je tiens à m'excuser si ce sujet n'est pas bien placé, mais j'ignore si cela concerne le package JNA ou l'IDE NetBeans. Ensuite, j'ai eu beau chercher, je n'ai pas trouvé de réponse à ce problème précisément. Peut-être que je ne cherche pas du bon coté.
Voila plusieurs jours que je bloque sur un problème que je ne comprend pas, et avant d'en venir à des solutions drastiques (corde, toit de l'immeuble, ...), je viens crier à l'aide chez vous.
Mon problème :
J'essaie de charger une dll depuis un petit programme JAVA (simplifié ici). J'utilise donc JNA. Mon projet était initialement développé sous Eclipse, aucun problème, mes dll sont chargées, je fais mes traitements, bref, tout roule. Quand me viens l'idée saugrenue de passer sous NetBeans (que je trouve très bien d'ailleurs) pour faciliter la création de mon interface graphique... C'est là que tout a basculé.
Ma librairie "MLOSMAIN.DLL" est située dans le repertoire :
C:\truc\lib\
Il m'est totalement impossible de la charger depuis NetBeans, en utilisant des chemins absolus (code ci-dessous). Le même code, avec le même chemin absolu, exécuté sous Eclipse, fonctionne parfaitement. Bref, ca me dépasse. Ça doit pas être une histoire de path de NetBeans puisque les chemins sont absolus, a moins que j'ai loupé quelque chose de ce coté la. J'ai bien essayé le fameux : -Djna.library.path="C:\truc\" au lancement de la JVM, mais sans succès (avec des chemins relatifs, bien sur...). De toutes façons, j'ai un doute sur son utilité, puisque je n'en ai pas eu besoin sous Eclipse.
Le chargement du fichier texte se passe bien avec les deux IDE, il est dans le même dossier que la DLL.
Auriez-vous une idée de la source du problème? Je suis certainement passé à coté de quelque chose de tout bête, le tout est de savoir quoi 
Merci.
Edit : Précision, je souhaite bien sur que le chargement des librairie soit fait avec un chemin relatif, mais je pense que la première étape est déjà de comprendre ce problème.
Edit2 : J'obtiens bien evidemment une :
UnsatisfiedLinkError: Unable to load library 'C:\truc\lib\MLOSMAIN': Le module spécifié est introuvable.
Mais vous vous en doutiez... ^^
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
package test;
import com.sun.jna.Native;
import java.io.BufferedReader;
import java.io.FileReader;
public class Main {
public static void main(String[] args) throws Exception{
System.setProperty("jna.library.path", "C:\\truc");
System.setProperty("netbeans.library.path", "C:\\truc");
BufferedReader br = new BufferedReader(new FileReader("C:\\truc\\lib\\test.txt"));
JNAXCore MLOSMAIN_LIBRARY = (JNAXCore) Native.loadLibrary("C:\\truc\\lib\\MLOSMAIN", JNAXCore.class);
}
} |
1 2 3 4 5 6 7 8
|
package test;
import com.sun.jna.Library;
public interface JNAXCore extends Library{
} |
Partager