Je suis nouveau sur linux. J'essaie de charger un fichier SO dans Ubuntu en utilisant Java. Le fichier que j'ai spécifié dans la méthode java "System.load (/home/ab/Downloads/libtesseract.so)" se charge bien mais son fichier dépendant placé au même endroit que "libtesseract.so" est introuvable. Voici le message d'erreur que je reçois. Erreur: UnSatisfiedLinkError et dit "liblept.so.4" cound pas trouvé. Ce fichier est placé au même emplacement que libtesseract.so. Quand je place "liblept.so.4" dans le "/ lib". Il est capable de charger ce fichier. Donc ce que j'ai compris est que, pour Java, il n'est pas nécessaire de charger le dépendant. Il doit être chargé par Ubuntu. J'ai donc essayé une application simple pour charger ceci en définissant la variable PATH avec l'emplacement du fichier so. Et exporté le code java dans un pot et essayé d'exécuter ce fichier jar à partir du terminal car la variable de chemin n'est pas persistante pour l'ensemble du système. Cela a bien fonctionné. J'ai donc essayé de faire la même chose par programmation en utilisant le code ci-dessous pour ne pas fonctionner. Veuillez nous conseiller TIAImpossible de charger le fichier SO dépendant dans LInux
code:
ProcessBuilder pb = new ProcessBuilder("/bin/sh");
Map<String, String> envMap = pb.environment();
envMap.put("LD_LIBRARY_PATH", "/home/ab/Downloads");
envMap.put("PATH", "/home/ab/Downloads");
Set<String> keys = envMap.keySet();
for(String key:keys)
{
System.out.println(key+" ==> "+envMap.get(key));
}
System.load("/home/ab/Downloads/libtesseract.so");
"Donc ce que j'ai compris, c'est que ce n'est pas à Java de charger le dépendant, il doit être chargé par Ubuntu." - Non, je crois que c'est le travail de la JVM à faire. –
Merci pour le commentaire Damien ... Pourquoi je dis cela parce que le premier ou le principal SO que je charge en utilisant le code java se charge bien mais quand ce SO principal cherche d'autres dépendants Donc, il échoue lorsque cette autre dépendante est présente dans le même endroit. – user578219