2016-07-18 5 views
1

Ich habe eine App erstellt, die jnetpcap verwendet. Es sollte Multiplattform sein und auf 32 und 64 Plattformen laufen. Ich habe noch nie mit Maven gearbeitet, also wie fügt man alle Versionen von jnetpcap zum Projekt hinzu?Wie jnetpcap als Abhängigkeit in Maven-Projekt hinzufügen?

Ich fand eine Lösung, die nar https://github.com/sugree/jnetpcap verwendet, aber ich verstehe nicht, wie man es richtig verwendet.

Sollte ich die Struktur des Projekts kopieren und jnetpcap dort kompilieren? Wenn das nar ist, nicht die Abhängigkeit, wie fügt man es zum Projekt hinzu, damit ich jnetpcap in Java-Klassen verwenden kann?

PS Auch habe ich versucht, die Abhängigkeit mit conf hinzufügen jnetpcap von hier: https://www.versioneye.com/clojure/jnetpcap:jnetpcap/1.4.r1425-1d

Ich habe diese Zeilen zu meinem pom.xml hinzugefügt:

<repositories> 
<repository> 
    <id>clojars</id> 
    <url>http://clojars.org/repo/</url> 
</repository> 

<dependency> 
<groupId>jnetpcap</groupId> 
<artifactId>jnetpcap</artifactId> 
<version>1.4.r1425-1d</version> 

Es kompiliert ohne Fehler, aber wenn ich versuche, Projekt w auszuführen ith Befehl: exec: java -Dexec.mainClass = "org.sample.Main" es crushes mit Fehler: "keine jnetpcap in java.library.path".

Antwort

1

Ihre POM-Datei ist korrekt, aber jnetpcap weist eine Laufzeitabhängigkeit von einer systemeigenen Bibliothek auf, weshalb beim Versuch, Ihre Anwendung auszuführen, eine Fehlermeldung angezeigt wird. Um dies zu beheben, müssen Sie beim Start das Verzeichnis angeben, das die native Bibliothek enthält.

Zum Beispiel unter Windows würde dies wie folgt aussehen:

java -Dexec.mainClass="org.sample.Main" -Djava.library.path=C:\jnetpcap-1.4.r1425 

Sie auch dieses Verzeichnis als eine Umgebungsvariable enthalten kann - siehe jnetpcap FAQ für weitere Informationen zu diesem Thema.

+0

Dies funktioniert nicht in meinem Fall. Können Sie mich vorschlagen https://stackoverflow.com/questions/45220894/how-to-execute-maven-main-class-with-required-user-libraries/ – kit

+0

Ich habe eine Antwort mit mehr Details zu Ihrer spezifischen Verwendung hinzugefügt Fall. –