Regrouper les bibliothèques natives et JNI dans un JAR
Récemment, un développeur a cherché un moyen de consolider plusieurs dépendances, y compris des bibliothèques natives, au sein d'un fichier JAR unique. Cette stratégie vise à simplifier la distribution et à réduire les problèmes de redistribution.
L'énigme de la bibliothèque autochtone
L'un des défis rencontrés dans cette entreprise était l'inclusion de la bibliothèque native réelle, comme une tentative existante axée uniquement sur la bibliothèque JNI. De plus, la solution précédente semblait être adaptée à un plugin de dépendances natif spécifique et pourrait ne pas convenir à une redistribution générale.
Une solution complète
L'approche privilégiée consiste à utiliser System.load(File) pour charger la bibliothèque au lieu du System.loadLibrary(String) conventionnel, qui s'appuie sur la propriété système java.library.path. Cette méthode élimine le besoin pour les utilisateurs d'installer la bibliothèque manuellement, mais elle peut compromettre la portabilité entre les plates-formes si le JAR n'encapsule pas toutes les bibliothèques nécessaires.
Processus de mise en œuvre
Implémenter du code dans l'initialiseur statique d'une classe principale pour :
Étude de cas : jzmq
Cette solution a été utilisée dans jzmq, des liaisons Java pour ZeroMQ, où les hybrides la fonctionnalité permet de revenir à la recherche de la bibliothèque le long du java.library.path si la version intégrée ne peut pas être chargée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!