Scheint, dass die Bibliotheksdefinition nur Jars oder Ordner erlaubt.
Wie kann ich sicherstellen, dass die DLL der JAR-Datei folgt, wenn die App erstellt wird?
Angenommen, Sie beziehen sich auf das Erstellen einer NetBeans Platform App (oder eines Moduls), dann können Sie die DLL im Ordner "release / modules / lib /" ablegen. Dies ist auf der Plattform FAQ:
Zusätzliche Informationen hier:
Wenn Sie allgemeiner fragen, dann denke ich, dass die meisten Leute die DLL in das jar packen und sie dann nach dem Start der Anwendung an einen temporären Speicherort extrahieren. z.B.
Wenn Sie nicht danach suchen, müssen Sie weitere Informationen dazu angeben, was Sie tun möchten.
netbeans wird es nicht alleine machen, aber da es eine Ameise hinter den Kulissen gibt, gibt es einen Workaround.
Sie sollten ein Unterverzeichnis namens jni
in Ihrem Projektverzeichnis ( c:\path\to\mynetbeansproject\jni
) erstellen, alle .dll-, .so- und .jnilib-Dateien darin einfügen (das native Zeug) und die folgenden Zeilen zu% hinzufügen co_de% Datei finden Sie in Ihrem Projektverzeichnis, direkt vor dem build.xml
-Tag:
Fügen Sie dann die JAR-Datei Ihrem Projekt hinzu, wie Sie es immer tun. :)
Das in </project>
eingefügte Snippet stellt sicher, dass die nativen Bibliotheken Ihren jar-Dateien im Ordner build.xml
folgen, wenn Sie in Netbeans (oder dist/lib
von der Befehlszeile) "Clean and Build" aufrufen; Der jvm sucht nach den .dll (.so, .jnilib) Dateien im selben Verzeichnis wie die .jar, die sie lädt, also wird es funktionieren.
Beachten Sie, dass Ihr Projekt nicht innerhalb von Netbeans ausgeführt wird, weil ... ich bin nicht wirklich sicher, was passiert, aber es sieht so aus, als ob der Bibliothekspfad ( ant
) nicht die Bibliotheken Ihrer Projekte enthält. und ich kann es auf keinen Fall aus Netbeans verändern. Legen Sie einfach Ihre nativen Bibliotheken in LD_LIBRARY_PATH
auf Mac OS X ab oder speichern Sie sie einfach in /Library/Java/Extensions
unter Windows. Wenn Sie ein 64-Bit-Windows mit einem 64-Bit-JVM ausführen, habe ich keine Ahnung; Wenn Sie Linux ausführen, wissen Sie wahrscheinlich, wo Sie diese speichern können, aber c:\windows\system32
könnte eine gute Wette sein.
Ich habe die folgende Lösung bei der Verwendung von NetBeans 7.0.1 getestet und es hat funktioniert, aber ich weiß nicht, ob es auch in früheren Versionen funktioniert.
Die Lösung ist einfach und funktioniert per NetBeans-Modul. Wenn Sie also eine Suite haben, legen Sie ihre JNI-Dateien nicht in das Suite-Projekt, sondern platzieren Sie die gewünschten JNI-Dateien in das Modul selbst. Do:
Platzieren Sie Ihre nativen Bibliotheken daher unter Ihr_Projektverzeichnis / release / lib . Wenn Sie möchten, können Sie für jede gewünschte Zielplattform Unterverzeichnisse erstellen: Ihr_Projektverzeichnis / release / lib / amd64 , Ihr_Projektverzeichnis / release / lib / sparc32
Um mehr zu wissen, lesen Sie: Ссылка
Grüße, marciowb.info