10
votes

Charger la bibliothèque de JAR

Comment puis-je charger une bibliothèque d'un pot? E.G.

Test.jar
 +- libAbc.so
 +- libDef.so
 +- ...


3 commentaires

5 Réponses :


5
votes

Le code natif est chargé par le système d'exploitation sous-jacent et si ce code ne peut pas jeter un coup d'œil à l'intérieur d'un fichier jar pour ramasser les octets que vous souhaitez charger - quelles fenêtres ne peuvent pas - vous devez le rendre accessible dans le système de fichiers vous-même.

Pouvez-vous déployer votre bibliothèque à côté de votre fichier JAR?


0 commentaires

0
votes

Les bibliothèques doivent être chargées à partir du système de fichiers. Vous pouvez donc extraire votre bibliothèque du bocal dans un répertoire temporaire et le charger.


0 commentaires

5
votes

Vous devez le décompresser dans un dir temporaire et l'utilisation `system.load (" chemin / à / libabc.so ").

Ceci a été discuté précédemment .

édité : corrigé le lien.


1 commentaires

Votre lien "discuté précédemment" ne semble pas être pertinent



8
votes

Probablement pas la réponse que vous recherchez (extraire le fichier à un emplacement Temp est la réponse que vous recherchez), mais je pensais que je partageais une expérience du monde réel:

La plomberie requise pour provoquer la bibliothèque de JAR, assurez-vous qu'il est nettoyé par la suite, ne contient pas de conflit avec d'autres applications qui pourraient utiliser le pot, etc ... est très délicate. Cela peut être fait, mais les chances sont très bonnes que vous allongez avec des tonnes de copies temporelles de vos bibliothèques encombrant le système de l'utilisateur, ou vous serrez de conflits entre plusieurs applications à l'aide des bibliothèques.

Lorsque vous ajoutez le fait que de nombreux systèmes d'exploitation ne permettent pas à n'importe quel fichier d'être utilisé comme bibliothèque (et fréquemment, les autorisations de l'utilisateur qui exécuteront votre application ne leur permettront pas de marquer un fichier arbitraire dans Le dossier Temp pour exécution), l'idée d'emballage des bibliothèques indigènes à l'intérieur du pot devient moins attrayante.

Qu'est-ce que nous avons enfin fini en train de faire était de passer à un modèle où nous avons notre installateur (quel fait géré avec suffisamment d'autorisations) Placez la bibliothèque indigène appropriée à côté du pot. Ceci est assez simple à faire, conserve toutes les bibliothèques d'exécution au même endroit et est facile à administrer et à comprendre (essayant de suivre une incompatibilité de version dans une application B / C, il tente de charger une bibliothèque enregistrée sur Temp stockage. par une deuxième application est un cauchemar total).


0 commentaires

0
votes

Vous devriez extraire les fichiers du pot et les charger avec; xxx

mais n'oubliez pas de nettoyer les fichiers après la fermeture du programme, s'il ne le fait pas 't prendre trop de temps pour les extraire; xxx


0 commentaires