Native und JNI-Bibliotheken in einem einzigen JAR bündeln
Kann ich alles in einem JAR bündeln und weiterverbreiten?
Ja, es ist möglich, eine einzelne JAR-Datei zu erstellen, die alle Abhängigkeiten enthält, einschließlich nativer JNI-Bibliotheken für mehrere Plattformen. Dies kann jedoch Auswirkungen auf die Portabilität haben.
Prozess:
-
Fügen Sie die nativen JNI-Bibliotheken in die JAR-Datei ein: Platzieren Sie sie unter plattformspezifische Standorte innerhalb der JAR, z. B. NATIVE/${os.arch}/${os.name}/libname.lib.
-
Code-Implementierung:
- Berechnen Sie das Betriebssystem. arch und os.name während der Klasseninitialisierung.
- Verwenden Sie Class.getResource(String), um die Bibliothek innerhalb der zu finden JAR.
- Wenn die Bibliothek vorhanden ist, extrahieren Sie sie in eine temporäre Datei und laden Sie sie mit System.load(File).
Beispielimplementierung :
Das jzmq-Paket (Java-Bindungen von ZeroMQ) hat diese Lösung implementiert. Der Code ist hier zu finden und bietet einen Hybridansatz, der auf das herkömmliche Laden der Bibliothek zurückgreift, wenn das Laden der eingebetteten Bibliothek fehlschlägt.
Vorteile:
-
Vereinfacht Verteilung: Vermeidet die Notwendigkeit für Benutzer, JNI-Bibliotheken auf ihrem Computer zu installieren Systeme.
Überlegungen:
-
Portabilität: Die Unterstützung für alle Plattformen hängt von der Einbeziehung bestimmter Bibliotheken in die JAR ab Datei.
-
Wartung: JAR auf dem neuesten Stand halten Abhängigkeiten erfordern möglicherweise manuelle Aktualisierungen.
Das obige ist der detaillierte Inhalt vonKann ich native und JNI-Bibliotheken zur vereinfachten Verteilung in einem einzigen JAR bündeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Stellungnahme:Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn