J'ai rencontré un comportement étrange sur l'un de nos clients en essayant de charger une librairie JNI à l'exécution.Java System.load (libName) recherche le mauvais nom de la librairie
Lorsque vous essayez de charger une bibliothèque
System.load("libtestlibrary.so")
Je reçois un
liblibtestlibrary.so.so: cannot open shared object file: No such file or directory
Il semble que le nom de la bibliothèque donnée est (à tort) préfixé par « lib » et suffixé avec » .donc "et ainsi notre bibliothèque ne peut être trouvée.
Ceci se produit uniquement sur une machine (AIX 6). J'ai été incapable de reproduire ce comportement sur notre propre boîtier AIX 6 en utilisant exactement le même JRE, donc je suppose que cela est causé par certains paramètres du système d'exploitation sur la machine du client.
Est-ce que quelqu'un a une idée pour désactiver cette fonction?
Essayez 'System.load ("/fullpath/libtestlibrary.so ")' ou 'System.loadLibrary (" testlibrary ")'. Ce dernier combiné avec la propriété de réglage 'java.library.path' en conséquence. –
Une note: utiliser l'utilitaire 'truss (1)' pour déboguer, avec l'option '-f' –
Le problème n'est pas le chemin, la bibliothèque se trouve dans le répertoire courant. Le problème est la modification du nom de la bibliothèque en le préfixant avec "lib" et en le suffixant avec ".so". Je comprends que je pourrais charger la bibliothèque en utilisant 'System.load (" testlibrary ")', mais dans ce cas le code échouera sur toutes les autres plates-formes. 'System.loadLibrary (" testlibrary ")' devrait être utilisé pour les bibliothèques natives autant que je comprends la documentation. –