J'ai un programme Java qui appelle le code C via JNI que j'essaye de lancer sous Linux. Le code externe se compose de deux fichiers .so: un pour les liaisons JNI (construites avec swig) et l'autre avec les fonctions actuelles. J'ai les deux bibliothèques dans le même répertoire et LD_LIBRARY_PATH est correctement défini. ldd ne signale aucun problème lors de l'exécution à partir de la ligne de commande, mais lorsque je mets LD_LIBRARY_PATH à la même valeur dans la boîte de dialogue "Exécuter les configurations" de l'éditeur Eclipse et tente d'exécuter le programme, l'erreur suivante se produit:Comment déboguer une erreur java system.loadlibrary sous linux?
java .lang.UnsatisfiedLinkError: [chemin d'accès aux bibliothèques]/[bibliothèque de liaison JNI] .so: [bibliothèque de code actuelle] .so: impossible d'ouvrir le fichier d'objet partagé: aucun fichier ou répertoire
Ceci m'amène à croire que le JNI La bibliothèque wrapper est chargée avec succès, mais il y a un échec lorsque cette bibliothèque tente de charger la bibliothèque contenant le code réel. Y at-il un moyen de déboguer cela plus loin?
Je noterai en outre que ce problème se produit dans l'éditeur Eclipse lui-même et que je n'ai pas essayé de placer le code dans un fichier jar et de l'exécuter dans une instance jvm autonome.