# Probleme mit Jpcap



## th_pion (18. Sep 2009)

Hi,

ich muss die Hardwareadresse eines Paketes rausfinden, dass ich mit einem Socket empfangen habe. Nach einiger Recherche bin ich auf Jpcap gestoßen...allerdings kriege ich immer einen Fehler.

Ich habe es auf 2 unabhängigen Linux SuSe Rechnern probiert und bekam jedes Mal den gleichen Fehler.

Installation von Jpcap hat über Yast ganz gut geklappt...und dann hab ich folgendes Programm ausgeführt:


```
NetworkInterface[] devices = JpcapCaptor.getDeviceList();
for (int i = 0; i < devices.length; i++) {
	// print out its name and description
	System.out.println(i + ": " + devices[i].name + "("	+ devices[i].description + ")");

	// print out its datalink name and description
	System.out.println(" datalink: " + devices[i].datalink_name + "(" + devices[i].datalink_description + ")");

	// print out its MAC address
	System.out.print(" MAC address:");
	for (byte b : devices[i].mac_address)
		System.out.print(Integer.toHexString(b & 0xff) + ":");
	System.out.println();

	// print out its IP address, subnet mask and broadcast address
	for (NetworkInterfaceAddress a : devices[i].addresses)
		System.out.println(" address:" + a.address + " " + a.subnet+ " " + a.broadcast);
}
```

Der Code kommt von irgend einer ergoogleten Seite.

Fehlermeldung:
Exception in thread "main" java.lang.UnsatisfiedLinkError:
/usr/lib/libjpcap.so: libpcap.so.0.9: cannot open shared object file: No such file or directory


Hat jemand ne Idee woran es liegen könnte?


----------



## maki (18. Sep 2009)

Schon mal die Installationsanleitung gelesen? 
Jpcap - Install


----------



## th_pion (18. Sep 2009)

maki hat gesagt.:


> Schon mal die Installationsanleitung gelesen?
> Jpcap - Install




ich hätte hier nicht gepostet wenn mich das Thema nicht mehrere Stunden beschäftigt hätte  JDK ist in aktueller Version installiert und sonst gibts da ja nicht viel zu beachten...


----------



## maki (18. Sep 2009)

th_pion hat gesagt.:


> ich hätte hier nicht gepostet wenn mich das Thema nicht mehrere Stunden beschäftigt hätte  JDK ist in aktueller Version installiert und sonst gibts da ja nicht viel zu beachten...


Du glaubst gar wie viele leute hier posten bevor sie googeln 

Dass das JDK installiert ist klar, wie sieht es denn mit dem Debian Package aus?


----------



## th_pion (18. Sep 2009)

hm? wieso Debian-Package? Ich hab das RPM-Package per Yast installiert...
wenn du mir jetzt sagst, dass ich was grundlegendes falsch gemacht hast, weiß ich nich ob ich mich freuen (weil ich den Fehler hab) oder ärgern soll (weil ich so dumm war)


----------



## maki (18. Sep 2009)

Ach, bin einfach davon ausgegangen dass du Ubuntu/Debian nutzt, nicht Suse.

Ist die .so Datei denn dort wo sie sein sollte und stimmen die Berechtigungen?


----------



## th_pion (18. Sep 2009)

ja datei ist unter /usr/lib/libjpcap.so ... wollte ich eigentl. im Ausgangspost schon schreiben, habs aber vergessen^^
rwxr-xr-x sollte es tun, oder?


----------



## maki (18. Sep 2009)

Eigentlich ja... imho


----------



## th_pion (21. Sep 2009)

keiner ne Idee woran es liegen könnte? oder irgend eine Vorgehensweise um den Fehler ausfindig zu machen?


----------



## tuxedo (21. Sep 2009)

Also wenn die Datei wirklich da ist, dann kanns eigentlich nur noch eine fehlende Zugriffsberechtigung sein. Schonmal "chmod 777" testweise probiert?

Ist /usr/lib/libjpcap.so vielleicht ein kaputzter Symlink?


----------



## th_pion (21. Sep 2009)

oh man...ich bin durch zufall und rumprobieren auf eine Lösung gestoßen, kanns mir aber nich so ganz erklären.


unter /usr/lib/ liegen 3 u.a. 3 dateien:
libjpcap.so
libpcap.so.0.9.7
libpcap.so.0 wobei das ein Link auf die .9.7 datei ist

wenn ich die libpcap.so.0.9.7 in libpcap.so.0.9 umbenne geht es...

aber warum heißt die datei .9.7 und er sucht eine .9?
könnte ich versionsprobleme oder sowas kriegen, wenn ich die einfach umbenenne?


----------



## tuxedo (21. Sep 2009)

Einfach Files umbenennen ist ein "dirty-workaround". Du solltest eher nach dem Fehler suchen.

kann es sein dass libjpcap.so auch ein symlink ist? Wie sieht denn ein "dir" oder "ls -lha" angewandt auf /usr/lib/lib/libjpcap* aus?


----------



## maki (21. Sep 2009)

Wenn schon ein Workaround, dann lieber einen Link, nicht das File umbenennen.


----------



## th_pion (21. Sep 2009)

tuxedo hat gesagt.:


> kann es sein dass libjpcap.so auch ein symlink ist? Wie sieht denn ein "dir" oder "ls -lha" angewandt auf /usr/lib/lib/libjpcap* aus?



/usr/lib> ls -lha /usr/lib/libjpcap*
-rwxrwxrwx 1 root root 47K Jun 11  2007 /usr/lib/libjpcap.so


@maki: link ist wohl ne gute idee, ja^^


----------



## tuxedo (21. Sep 2009)

Ein weiterer Symlink wäre recht sauber gelöst, ja.

Was mich nur wundert ist, dass bei dem KOmmando nur eine Datei als Ergebnis aufgelistet wird. Müssten da nicht noch die Symlinks und die andere .so's auftauchen?

- Alex


----------



## th_pion (21. Sep 2009)

nein die anderen heißen ja libpcap ohne j...

ls -lha /usr/lib/libpcap*
lrwxrwxrwx 1 root root   16 Oct 15  2007 /usr/lib/libpcap.so.0 -> libpcap.so.0.9.7
lrwxrwxrwx 1 root root   16 Jan 27 02:34 /usr/lib/libpcap.so.0.9 -> libpcap.so.0.9.7      //das ist die, die ich erstellt hab
-rwxr-xr-x 1 root root 163K Sep 22  2007 /usr/lib/libpcap.so.0.9.7


----------



## tuxedo (21. Sep 2009)

Mal ne ganz andere Frage: Warum verlässt du dich drauf dass das OS JPCAP schon vorhält bzw. mitliefert? Was ist wenn jemand die Anwendung auf einem LInux laufen lassen will wo die LIB nicht mitgeliefert wird.

Was ich damit sagen will: Warum lieferst du die Lib nicht selbst mit. Dann weißt du genau was wo liegt und musst nix pfuschen?!

- Alex


----------



## th_pion (21. Sep 2009)

wäre ne option^^ wie mach ich das am geschicktesten?


----------



## tuxedo (21. Sep 2009)

So wie mans bei anderen Bibliotheken auch macht: Mit auf die Platte kopieren und beim starten der Anwendung sicherstellen dass der Classpath richtig gesetzt ist. Bei JPCAP kommt halt noch der Native-Lib-Pfad dazu, ist aber das gleiche in grün.

- Alex


----------

