Bonjour,

J'ai un problème de chargement de librairies JNI. Dans mon cas il s'agit de celles de scilab.
En pratique, j'inclus un de leurs jars dans mon projet (org.scilab.modules.graphic_export.jar). Dans une de mes classes java, j'ai un appel tout simple à cette api :
Cela se passe sans problème si je modifie la variable d'environnement système PATH en ajoutant le répertoire bin de l'install de scilab. Ce que j'essaie de faire maintenant est de faire marcher ça sans cette horrible mise à jour du PATH. J'ai modifié java.library.path, mais sans succès.

Voilà l'erreur que je me prends à chaque fois :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
The native library scigraphic_export does not exist or cannot be found.
java.lang.UnsatisfiedLinkError: C:\Program Files\scilab-5.1\bin\scigraphic_export.dll: Can't find dependent libraries
	at java.lang.ClassLoader$NativeLibrary.load(Native Method)
	at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1778)
	at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1703)
	at java.lang.Runtime.loadLibrary0(Runtime.java:823)
	at java.lang.System.loadLibrary(System.java:1030)
	at org.scilab.modules.graphic_export.jni.GL2PSConstantJNI.<clinit>(Unknown Source)
	at org.scilab.modules.graphic_export.jni.GL2PSConstant.get_GL2PS_MAJOR_VERSION(Unknown Source)
	at org.scilab.modules.graphic_export.GL2PS.<clinit>(Unknown Source)
	at graphics.ScilabTester.main(ScilabTester.java:13)
Je ne sais pas si je m'y prends bien car je ne suis que novice sous JNI. J'aimerais in fine pouvoir inclure ces libs dans un package distribuable.



edit :
Citation Envoyé par le y@m's Voir le message
D'après le message d'erreur il semblerait qu'il manque d'autres dlls. Je ne connais pas cette API, mais n'y aurait-il pas plusieurs dlls ? Pour ne pas avoir à modifier le PATH, il te faut copier les dll dans un des répertoires définis dans java.library.path (typiquement C:\WINDOWS\system32 en fait parti ).
Oui, il y a bien d'autres dlls, mais si ça marche en ajustant la variable PATH, pourquoi est-ce que ça ne passe pas avec java.library.path ?