2017-12-26 15 views
0

Ich habe ein Projekt auf Netbeans in Ordnung mit Opencv-Bibliothek arbeiten.Wie Bibliotheken zu meiner .jar-Datei hinzufügen

Ich habe eingestellt auf Projekteigenschaften> Run: -Djava.library.path="C:\opencv\build\java\x64"

Wenn ich das Projekt auf NetBeans es funktioniert laufen.

Allerdings, wenn ich die JAR-Datei und versuchen, java -Djava.library.path="C:\opencv\build\java\x64" -jar myjar.jar von cmd bauen, wirft es

java.lang.NoClassDefFoundError: org/opencv/core/Mat

Was bin ich mein Glas zu bauen?

bearbeiten

Im Verzeichnis, in dem .jar gebaut wurde, erstelle ich ein Verzeichnis lib genannt und innerhalb I opencv-300.jar setzen: Wenn ich java -cp "lib/opencv-330.jar;myjar.jar" gui.Client ausführen es funktioniert ... Gibt es eine Möglichkeit, die App auszuführen, ohne diesen Befehl auszuführen?

+0

Sie müssen ausführbares jar erstellen. – tsolakp

+0

was meinst du mit "ausführbaren" jar? Ich habe bereits meine .jar –

+0

https://en.wikipedia.org/wiki/JAR_(file_format)#Executable_JAR_files – tsolakp

Antwort

0

Sie können eine native Library-Datei laden (DLL/Windows-oder .so/Linux) mit zwei Möglichkeiten:

1) Laden Sie die Datei, indem Sie den vollständigen Pfad bereitstellt:

System.load("my/full/path/opencv.dll"); 

2) wenn Ihre Mutter Datei in Ihrem Java-Bibliothek Pfad:

System.loadLibrary("opencv"); 

Beachten Sie, dass im zweiten Fall, dass Sie nur den Namen der ursprünglichen Datei zur Verfügung stellen müssen (ohne Erweiterung).

Die Standard-Java-Bibliothek Pfad auf OS ab:

Unter Windows es Karten zu PATH
Auf Linux, es ordnet
auf OS X LD_LIBRARY_PATH, ordnet es

Wenn DYLD_LIBRARY_PATH Sie möchten Ihren eigenen Java-Bibliothekspfad festlegen:

try { 
     System.setProperty("java.library.path","YOUR/PATH"); 
     Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths"); 
     fieldSysPath.setAccessible(true); 
     fieldSysPath.set(null, null); 
    } catch (Exception ex) { 
     System.out.println("Failed to set Java Library Path: " + ex.getMessage); 
    } 
+0

Ich denke, ich lade die DLL korrekt (ich habe bereits getan, was Sie sagten), aber das Problem kommt, wenn Opencv-300.jar nicht verknüpft ist oder so ähnlich. - Um Opencv auf Java zu verwenden, müssen Sie Opencv.dll und Opencv.jar verwenden. –

+0

Verwenden Sie Gradle? –

+0

nein, es ist nur eine normale Desktop-Swing-Anwendung –

Verwandte Themen