Rendre accessible à la JVM une librairie dynamique sous Linux - Java - Programmation
Marsh Posté le 17-10-2003 à 15:13:50
J'ai essayé ça :
http://forum.hardware.fr/forum2.ph [...] ubcat=#bas
Mais ça n'a pas l'air de marcher! :-( (même message)
Marsh Posté le 17-10-2003 à 15:27:19
Y a pas un répertoire exprès pour les bibliothéques dynamiques sous linux? Si non y a aussi une variable d'environement PATH sous linux, ajoutes y l'enplacement de tas bibliothéque.
Marsh Posté le 17-10-2003 à 15:31:16
Ui pis quand tu lances ton prog, tu peux ajouter une propriété, hein. Genre : java -Djava.library.path=/joulipath MonSuperProg
Marsh Posté le 17-10-2003 à 15:32:42
LetoII a écrit : Y a pas un répertoire exprès pour les bibliothéques dynamiques sous linux? Si non y a aussi une variable d'environement PATH sous linux, ajoutes y l'enplacement de tas bibliothéque. |
Mais j'connais absolument rien à Linux moi. Elle est ou cette variable d'environnement ? Et je l'édite comment ?
Marsh Posté le 17-10-2003 à 15:33:45
Taiche a écrit : Ui pis quand tu lances ton prog, tu peux ajouter une propriété, hein. Genre : java -Djava.library.path=/joulipath MonSuperProg |
ha ouais, pas con ça. Mais c'est une webapp, j'passe par tomcat. Jusqu'a maintenant j'ai pas mis le nez dans le script de démarrage.
Marsh Posté le 17-10-2003 à 15:34:05
PATH=$PATH:mon chemin qui va bien
export PATH
Marsh Posté le 17-10-2003 à 15:35:25
El_gringo a écrit : |
Ah OK. J'connais pas Tomcat mais j'suppose qu'il y a moyen de spécifier des arguments à la JVM (comme la taille max du heap, etc...) donc mate de ce côté-là, t'y trouveras peut-être ton bonheur.
Marsh Posté le 17-10-2003 à 15:36:11
Taiche a écrit : |
bien sur qu'il y a moyen. Reste à trouver le script de démarrage qui lance la JVM...
Marsh Posté le 17-10-2003 à 16:39:04
Je suis en train de devenir fou !!!!
J'ai essayé des tas de trucs, rien ne marche.
J'ai essayé :
modifier la variable d'environnement LD_LIBRARY_PATH (commande : env LD_LIBRARY_PATH=$LD_LIBRARY_PATHmonpath)
modifier cette même variable, mais dans la cadre de tomcat seulement.
modifier l'appel de la JVM qui fait tourner tomcat pour y ajouter -Djava.library.path=/joulipath
-> Dans ma servlet, quand une lib est pas trouvée, je liste le contenu de java.library.path. Résultat : dans tous ces cas, les chemins sont toujours les mêmes (3 chemins seulement, tous liés au SDK utilisé).
Mais c'est pas tout. J'ai essayé de coller ma lib dans un des ces 3 chemins. Il ne la trouve pas non plus !!!!!
Pour compiler ma dll, j'ai fait :
$ gcc -fPIC -c *.c
$ gcc -shared -Wl,-soname,libfoo.so.1 -o libfoo.so.1.0 *.o
$ ln -s libfoo.so.1.0 libfoo.so.1
$ ln -s libfoo.so.1 libfoo.so
C'est bon ?
Aidez moi s'y vous plait, j'ai bientôt plus de cheveux, et je risque d'arracher n'importe quoi!
Marsh Posté le 17-10-2003 à 16:57:07
El_gringo a écrit : |
Regardes plutôt du côté des fichiers de conf de tomcat, tu dois pouvoir mettre ça dans les propriétés de ton context. Sinon cette bibliothèque (car c'est bien bibliothèque le mot français), tu l'as mise où ?
Marsh Posté le 17-10-2003 à 17:05:26
R3g a écrit : |
C'est dans un fichier conf de tomcat que j'ai fais mes 2 premiers changements (dans tomcat4.conf je crois).
Et, mes .so, je les ai mises un peu partout! Nottament dans des chemins faisant partie de java.library.path
(ouf, bientôt le week end !)
Marsh Posté le 17-10-2003 à 17:08:14
El_gringo a écrit : |
Et tu as essayé de les mettre dans le repertoire /lib de ton context ? (enfin je suis plus sur du nom... le repertoire où tu mets les jars dont tu as besoin)
Marsh Posté le 18-10-2003 à 17:49:45
defini le LD_LIBRARY_PATH ds le script de demarrage de tomcat: tu dois y mettre le chemin complet, fichier.so y compris
Marsh Posté le 17-10-2003 à 15:03:30
Je fais mes premiers pas sur linux (redhat), et j'arrive pas à utiliser une librairie dynamique C++ (via JNI). La JVM ne trouve pas la librairie en question ("no MyLibrary in java.library.path" ).
Sosu windows on ajoute à la variable d'environnement "PATH" le chemin du répertoire contenant la dll à charger, mais, ss linux, ça se passe comment ?