Mit nativen Abhängigkeiten innerhalb Maven
POM Abhängigkeit enthält native libraries (DLLs innerhalb einer JAR-Datei). Wie kann ich programmgesteuert sehen den Pfad der heruntergeladenen JAR-Datei, damit ich passieren kann es in "java.Bibliothek.Pfad"?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beantwortung meiner eigenen Frage: http://web.archive.org/web/20120308042202/http://www.buildanddeploy.com/node/17
Kurz gesagt, können Sie mithilfe des maven-dependency-plugin:entpacken Ziel zum extrahieren der Bibliotheken in einem bekannten Pfad, und übergeben Sie die in
java.library.path
:Seit
System.load()
kann nicht geladen werden Bibliotheken in ein jar, haben Sie, um eine benutzerdefinierte Bootloader-Extrakte die Bibliothek in eine temporäre Datei zur Laufzeit. Projekte Mit JNI diskutiert diesen Ansatz und stellen den code für die benutzerdefinierte loader.Wäre eine alternative zum entpacken der Abhängigkeit, zum Beispiel mit
Abhängigkeit:entpacken
.Können Sie die maven-dependency-plugin zum kopieren der Artefakte zu einem vordefinierten Pfad:
http://maven.apache.org/plugins/maven-dependency-plugin/examples/copying-artifacts.html
Wenn die DLL innerhalb der JAR-Datei, dann müssen Sie kopieren es in ein Verzeichnis, bevor es geladen werden kann. (Gläser, die native Bibliotheken in der Regel tun dies selbst). Wenn Sie Ihr GLAS ist nicht dabei, dann können Sie mit der Klasse.getResourceAsStream() und schreiben diese in ein Verzeichnis, das Sie Hinzugefügt haben, um das
java.library.path
.Ein Beispiel für dieses finden Sie unter loadNativeLibrary in der JVA. Er verwendet diese Technik, um es zu laden, seine eigene Bibliothek (eine JNI-Bibliothek) aus einem GLAS.