NetBeans-Bibliothek mit JNI

8

Kann ich eine Bibliothek definieren, die JNI in NetBeans verwendet?

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?

    
Allain Lalonde 13.01.2009, 19:25
quelle

3 Antworten

6

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.

    
kaliatech 06.01.2010, 02:19
quelle
1

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:

%Vor%

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.

    
domenico 11.01.2010 13:39
quelle
1

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:

  1. Finden Sie ein NetBeans-Modul-Projekt, das Sie (oder müssen oder denken) Ihre JNI-Bibliotheken (z. B. mit der Erweiterung .DLL, .so und .jnilib) platzieren möchten;
  2. Klicken Sie unter Projekte mit der rechten Maustaste auf den Modulknoten, klicken Sie auf Eigenschaften,
  3. Klicken Sie im Dialogfeld Projekteigenschaften auf Bibliotheken und eingebundene JARs. Sie müssen dort eine externe Bibliothek hinzufügen. Ich habe die RxTX jar Bibliothek hinzugefügt. Nachdem Sie Ihre externen Bibliotheken hinzugefügt haben, kopiert das Netbeans Ant-Skript beim Erstellen der Lösung alle Dateien / Ordner aus dem Verzeichnis "your_project_dir / release" an den richtigen Speicherort.
  4. 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

marciowb 18.08.2011 19:36
quelle

Tags und Links