Bonjour,
j'ai réalisé un projet sous linux utilisant l'API Jpcap, jusque là pas de problème.
j'ai du migré ce projet sur du solaris 2.8, cela a impliqué
recompilation du projet
recompilation de la librairie de capture libpcap
voici l'erreur rencontré :
PacketCapture: loading native library jpcap.. ok
Using device 'lo0'
Exception in thread "main" java.lang.UnsatisfiedLinkError: open
at net.sourceforge.jpcap.capture.PacketCapture.open(Native Method)
at net.sourceforge.jpcap.capture.PacketCapture.open(PacketCapture.java:63)
at Sniffer.<init>(Sniffer.java:50)
at Sniffer.main(Sniffer.java:278)
je n'utilise pas le java.library.path mais la variable d'environnement LD_LIBRARY_PATH, le librairie libjpcap.so est bien chargé :
PacketCapture: loading native library jpcap.. ok
mais toutes les méthodes proposé par l'API génère des erreurs, ici open
manque t'il quelque chose ?


Peut être...
Tel qu'est décrit le phénomène, celui-ci se produit quand une librairie native n'est pas compilée "comme il faut" et que les fonctions ne peuvent être chargée dynamiquement.
Quand au "comme il faut" ça peut être bien des choses. Tout dépend comme le code est écrit et la librairie compilée
Ah oui j 'oubliais.
Ce ne sont pas forcément les fonctions de la librairie natives qui sont en cause.
Il se peut sous Solaris que par exemple une simple fonction printf ne soit pas trouvée. Du coup toutes les fonctions de la librairie native qui appellent printf vont lever l'exception UnsatisfiedLink error. Voir par exemple ici:
http://www.labo-sun.com/resource-FR-articles-615-0-java-autre-j2se-les-methodes-natives.htm
effectivement j'ai des doutes sur la librairie libjpcap.so malgré que la compilation c'est bien déroulé.
j'ai téléchargé le package lpcap_shared-0.9.5-sol8-sparc-local.gz de
sunfreeware.com, Freeware List for SPARC and Solaris 8
qui m'a fourni la librairie pré compilé comme on peut la trouvé pour linux mais rien y fait.
Je garde bon espoir
Hum...
Et avec java.library.path qu'est-ce que ça donne ?
Si ça ne marche pas avec java.library.path non plus,il faudrait que tu regardes les dépendances de cette librairie précompilée.
Peut être qu'elle a besoin d'une librairie absente de ton système, ou plus problablement que la librairie requise est bien présente, mais qu'il manque sur ton système un lien symbolique avec le bon numéro de version.
même resultat avec le -Dlibrary.path=
A priori la solution se trouve dans ton précédent post, le jar fournit par sourceforge pour windows et linux contiennent les fichiers .def et .h, utilisé lors d'un appel à une fonction native, le mien non
je creuse cette idée
Non, -Djava.library.path=
Et puis que mets tu à droite de = ?
Possible mais... ->
... -> Non, rien à voir.
C'est une éventuelle absence de librairie ou de lien symbolique qu'il faut rechercher. C'est très différent de ce que tu dis.
oui effetivement, je rectifie -Djava.library.path="le path de libjpcap.so"
Commenet puis-je trouver la librairie manquante ?
j'ai testé ma librairie avec les sources de jpcap et j'ai la même erreur :
PacketCapture: loading native library jpcap.. ok attempting to find network device.. devices detected: Exception in thread "main" java.lang.UnsatisfiedLinkError: lookupDevices at net.sourceforge.jpcap.capture.PacketCapture.lookupDevices(Native Method) at net.sourceforge.jpcap.client.CaptureTool.autoDetect(CaptureTool.java:142) at net.sourceforge.jpcap.client.CaptureTool.<init>(CaptureTool.java:46) at net.sourceforge.jpcap.client.CaptureTool.main(CaptureTool.java:416)c'est bien ma librairie qui est pourrie
voici ce que me donne ldd
ldd -d /opt/local/lib/libpcap.so libsocket.so.1 => /lib/libsocket.so.1 libnsl.so.1 => /lib/libnsl.so.1 libresolv.so.2 => /lib/libresolv.so.2 libc.so.1 => /lib/libc.so.1 libdl.so.1 => /lib/libdl.so.1 libmp.so.2 => /lib/libmp.so.2 /usr/platform/SUNW,Ultra-250/lib/libc_psr.so.1Oui mais moi je vouloir le vrai "le path de libjpcap.so" de mes petits yeux porcins :)
Pas sur...
Je n'aime pas ta sortie de ldd, avec aucune adresse mémoire, comme si la librairie socket.so.1 n'était pas chargée en mémoire, alors qu'elle aurait du l'être.
Tu as vérifié qu'elle est présente sur le système celle-là ? Et si oui en version 1 ? Si tu n'as pas exactement cette version tu vas devoir créer un lien symbolique pour aller pointer sur ce que tu as.
Voici mes variables
SNIF_PATH=/usr/snif
LD_LIBRARY_PATH=$SNIF_PATH/lib
avec dans SNIF_PATH :
lib/ les librairies sql/ les scripts sql pour les creations de bases
avec dans lib/src/ les sources du projet
classes/ les sources compilées
bin/ les scripts de compilation, lancement, deployement
conf/ les fichiers de conf
mysql-connector-java-5.0.5-bin.jar libjpcap.so
pour plus de facilité à trouver cette erreur, j'ai ajouté directement les sources de jpcap à mon projet, par conséquent je n'ai plus besoin du jar net.sourceforge.jpcap-0.01.16.jarje n'ai pas de socket.so.1 mais libsocket.so.1 est la même chose ?
un peu plus de détails sur
ldd -d -v /usr/snif/lib/libjpcap.so find object=libsocket.so.1; required by /usr/snif/lib/libjpcap.so libsocket.so.1 => /lib/libsocket.so.1 find version=libsocket.so.1 libsocket.so.1 (SUNW_0.7) => /lib/libsocket.so.1 find object=libnsl.so.1; required by /usr/snif/lib/libjpcap.so libnsl.so.1 => /lib/libnsl.so.1 find version=libnsl.so.1 libnsl.so.1 (SISCD_2.3) => /lib/libnsl.so.1 find object=libresolv.so.2; required by /usr/snif/lib/libjpcap.so libresolv.so.2 => /lib/libresolv.so.2 find object=libc.so.1; required by /usr/snif/lib/libjpcap.so libc.so.1 => /lib/libc.so.1 find version=libc.so.1 libc.so.1 (SUNW_1.19) => /lib/libc.so.1 find object=libnsl.so.1; required by /lib/libsocket.so.1 find version=libnsl.so.1 libnsl.so.1 (SUNW_1.7) => /lib/libnsl.so.1 libnsl.so.1 (SUNWprivate_1.1) => /lib/libnsl.so.1 find object=libc.so.1; required by /lib/libsocket.so.1 find version=libc.so.1 libc.so.1 (SUNW_1.19) => /lib/libc.so.1 libc.so.1 (SUNWprivate_1.1) => /lib/libc.so.1 find object=libdl.so.1; required by /lib/libnsl.so.1 libdl.so.1 => /lib/libdl.so.1 find version=libdl.so.1 libdl.so.1 (SISCD_2.3) => /lib/libdl.so.1 find object=libc.so.1; required by /lib/libnsl.so.1 find version=libc.so.1 libc.so.1 (SUNW_1.19) => /lib/libc.so.1 libc.so.1 (SUNWprivate_1.1) => /lib/libc.so.1 find object=libmp.so.2; required by /lib/libnsl.so.1 libmp.so.2 => /lib/libmp.so.2 find version=libmp.so.2 libmp.so.2 (SUNW_1.1) => /lib/libmp.so.2 libmp.so.2 (SUNWprivate_1.1) => /lib/libmp.so.2 find object=libsocket.so.1; required by /lib/libresolv.so.2 find version=libsocket.so.1 libsocket.so.1 (SUNW_1.4) => /lib/libsocket.so.1 libsocket.so.1 (SUNWprivate_1.1) => /lib/libsocket.so.1 find object=libnsl.so.1; required by /lib/libresolv.so.2 find version=libnsl.so.1 libnsl.so.1 (SUNW_1.7) => /lib/libnsl.so.1 libnsl.so.1 (SUNWprivate_1.1) => /lib/libnsl.so.1 find object=libdl.so.1; required by /lib/libresolv.so.2 find version=libdl.so.1 libdl.so.1 (SISCD_2.3) => /lib/libdl.so.1 find object=libc.so.1; required by /lib/libresolv.so.2 find version=libc.so.1 libc.so.1 (SUNW_1.1) => /lib/libc.so.1 libc.so.1 (SUNWprivate_1.1) => /lib/libc.so.1 find object=libdl.so.1; required by /lib/libc.so.1 find version=libdl.so.1 libdl.so.1 (SUNWprivate_1.1) => /lib/libdl.so.1 find object=libc.so.1; required by /lib/libmp.so.2 find version=libc.so.1 libc.so.1 (SYSVABI_1.3) => /lib/libc.so.1 find object=/usr/platform/SUNW,Ultra-250/lib/libc_psr.so.1; required by /lib/libc.so.1 /usr/platform/SUNW,Ultra-250/lib/libc_psr.so.1pour chaque librairie on a :
find object=libc.so.1; required by /lib/libmp.so.2 find version=libc.so.1 libc.so.1 (SYSVABI_1.3) => /lib/libc.so.1find object et find version sauf pour le dernier ou on a seulement libc_psr.so.1 sans la version. Cela a t il un impact ?
Oui c'est bien la même chose. J'aurais du écrire libsock, etc...
Je suis parfois un peu paresseux. :oops:
si libc_psr.so.1 est bien présente physiquement cela ne doit pas avoir d'impact.
Si c'est un lien symbolique orphelin alors ça en a un évidemment.
Mais j'ai du mal à imaginer que ton système tourne amputé d'un bout de libc, alors... :?:
C'est curieux ton affaire. Je dois dire que ça m'intrigue, mais je n'ai malheureusement pas beaucoup le temps d'y penser. Peut être plus tard dans la journée.
en tout cas merci de chercher à m'aider
voici un complément d'information sur le déroulement du programme :
truss -aelf sniffer --host dot04 --port 3306 --desc test -i hme0 -r -p -f "port 3306" > ecdb 2>&1 more ecdb 6706/1: execve("/usr/bin/sh", 0xFFBEFB14, 0xFFBEFB50) argc = 14 6706/1: argv: sh /bin/sniffer --host dot04 --port 3306 --desc test -i 6706/1: hme0 -r -p -f port 3306 6706/1: envp: PWD=/usr/snif FCEDIT=vi ORACLE_SID=????? TZ=MET 6706/1: SNIF_PATH=/usr/snif HOSTNAME=dot04 6706/1: LD_LIBRARY_PATH=/usr/snif/lib HORA=/oracle 6706/1: CLASSPATH=/usr/snif:/usr/snif/classes:/usr/snif/lib/mysql-connector-java-5.0.5-bin.ja r 6706/1: MANPATH=/usr/share/man:/usr/local/man: PS1=dot04:root} 6706/1: SYBASE=/usr/local/sybase/V11 USER=root 6706/1: MACHTYPE=sparc-sun-solaris2.6 MAIL=/var/mail/root EDITOR=vi 6706/1: HOST=dot04 ORACLE_BASE=/oracle JAVA_HOME=/tmp/jre1.5.0_12 6706/1: ORACLE_HOME=/oracle/product/SunOS/EE.8.1.7 6706/1: SSH_CLIENT=10.28.64.65 47934 22 LOGNAME=root SHLVL=1 6706/1: SHELL=/sbin/sh HOSTTYPE=sparc OSTYPE=solaris2.6 HOME=/ 6706/1: TERM=xterm 6706/1: PATH=/tmp/jre1.5.0_12/bin:/usr/snif:/usr/snif/lib:/bin:/usr/bin:/usr/bin/X11:/usr/loc al/bin:/usr/local/bin:/usr/sbin:/usr/local/bin:/opt/SUNWspro/bin:/usr/proc/bin:/opt/local/bin/:/opt/sfw /bin/:/usr/ucb:/usr/ccs/bin: 6706/1: SSH_TTY=/dev/pts/1 _=/bin/truss 6706/1: resolvepath("/usr/lib/ld.so.1", "/usr/lib/ld.so.1", 1023) = 16 6706/1: open("/var/ld/ld.config", O_RDONLY) Err#2 ENOENT 6706/1: stat("/usr/snif/lib/libgen.so.1", 0xFFBEF234) Err#2 ENOENT 6706/1: stat("/usr/lib/libgen.so.1", 0xFFBEF234) = 0 6706/1: open("/usr/lib/libgen.so.1", O_RDONLY) = 3 6706/1: fstat(3, 0xFFBEF234) = 0 6706/1: mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF3A0000 6706/1: mmap(0x00000000, 98304, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF380000 6706/1: mmap(0xFF396000, 2335, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 24576) = 0xFF396000 6706/1: munmap(0xFF386000, 65536) = 0 6706/1: memcntl(0xFF380000, 6932, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 6706/1: close(3) = 0 6706/1: stat("/usr/snif/lib/libc.so.1", 0xFFBEF234) Err#2 ENOENT 6706/1: stat("/usr/lib/libc.so.1", 0xFFBEF234) = 0 6706/1: open("/usr/lib/libc.so.1", O_RDONLY) = 3 6706/1: fstat(3, 0xFFBEF234) = 0 6706/1: mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF3A0000 6706/1: mmap(0x00000000, 802816, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF280000 6706/1: mmap(0xFF33C000, 24764, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 70451 2) = 0xFF33C000 6706/1: munmap(0xFF32C000, 65536) = 0 6706/1: memcntl(0xFF280000, 113504, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0 6706/1: close(3) = 0 6706/1: stat("/usr/snif/lib/libdl.so.1", 0xFFBEF234) Err#2 ENOENT 6706/1: stat("/usr/lib/libdl.so.1", 0xFFBEF234) = 0 6706/1: open("/usr/lib/libdl.so.1", O_RDONLY) = 3 6706/1: fstat(3, 0xFFBEF234) = 0 6706/1: mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF3A0000 6706/1: close(3) = 0 6706/1: mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0 xFF370000 6706/1: stat("/usr/platform/SUNW,Ultra-250/lib/libc_psr.so.1", 0xFFBEF044) = 0 6706/1: open("/usr/platform/SUNW,Ultra-250/lib/libc_psr.so.1", O_RDONLY) = 3 6706/1: fstat(3, 0xFFBEF044) = 0 6706/1: mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF360000 6706/1: mmap(0x00000000, 16384, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) = 0xFF350000 6706/1: close(3) = 0 6706/1: munmap(0xFF360000, 8192) = 0 6706/1: getpid() = 6706 [6705] 6706/1: getpgid(6706) = 6705 6706/1: getsid(6706) = 4301 6706/1: brk(0x0003A0F0) = 0 6706/1: sysconfig(_CONFIG_SIGRT_MIN) = 38 6706/1: sysconfig(_CONFIG_SIGRT_MAX) = 45 6706/1: sigaltstack(0xFFBEFA04, 0x00000000) = 0 6706/1: sigaction(SIGHUP, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGHUP, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGINT, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGINT, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGQUIT, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGQUIT, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGILL, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGILL, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGTRAP, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGTRAP, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGABRT, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGABRT, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGEMT, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGEMT, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGFPE, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGFPE, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGBUS, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGBUS, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGSEGV, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGSYS, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGSYS, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGPIPE, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGPIPE, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGALRM, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGALRM, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGTERM, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGTERM, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGUSR1, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGUSR1, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGUSR2, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGUSR2, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGPWR, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGPWR, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGURG, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGURG, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGPOLL, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGPOLL, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGVTALRM, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGVTALRM, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGPROF, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGPROF, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGXCPU, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGXCPU, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGXFSZ, 0x00000000, 0xFFBEF980) = 0 6706/1: sigaction(SIGXFSZ, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGRTMIN, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGRTMIN+1, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGRTMIN+2, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGRTMIN+3, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGRTMAX-3, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGRTMAX-2, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGRTMAX-1, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: sigaction(SIGRTMAX, 0xFFBEF8E0, 0xFFBEF960) = 0 6706/1: brk(0x0003A0F8) = 0 6706/1: brk(0x0003A2F8) = 0 6706/1: brk(0x0003A4F8) = 0 6706/1: getuid() = 0 [0] 6706/1: getuid() = 0 [0] 6706/1: getgid() = 1 [1] 6706/1: getgid() = 1 [1] 6706/1: open64("/bin/sniffer", O_RDONLY) = 3 6706/1: close(19) Err#9 EBADF 6706/1: fcntl(3, F_DUPFD, 0x00000013) = 19 6706/1: close(3) = 0 6706/1: fcntl(19, F_SETFD, 0x00000001) = 0 6706/1: ioctl(2, TCGETA, 0xFFBEF92C) Err#25 ENOTTY 6706/1: read(19, " # / b i n / k s h\n\n".., 128) = 128 6706/1: brk(0x0003A7F8) = 0 6706/1: brk(0x0003A5F8) = 0 6706/1: brk(0x0003A9F8) = 0 6706/1: brk(0x0003A7F8) = 0 6706/1: brk(0x0003A5F8) = 0 6706/1: read(19, " P A T H } : $ { S N I F".., 128) = 128 6706/1: brk(0x0003AAF8) = 0 6706/1: brk(0x0003A8F8) = 0 6706/1: read(19, " . 0 . 5 - b i n . j a r".., 128) = 128 6706/1: brk(0x0003A6F8) = 0 6706/1: chdir("/usr/snif") = 0 6706/1: read(19, " l e s c r i p t p".., 128) = 128 6706/1: read(19, " 3 3 0 7 - - d e s c".., 128) = 128 6706/1: read(19, " C L A S S P A T H S n".., 128) = 128 6706/1: brk(0x0003ACF8) = 0 6706/1: getuid() = 0 [0] 6706/1: stat64("/tmp/jre1.5.0_12/bin/java", 0xFFBEF4C8) = 0 6706/1: access("/tmp/jre1.5.0_12/bin/java", 9) = 0 6706/1: read(19, " 0 2 4 m - c l a s s p".., 128) = 128 6706/1: read(19, " " " $ 4 "\n\t ; ;\n ".., 128) = 128 6706/1: read(19, " 2 4 m - c l a s s p a".., 128) = 128 6706/1: read(19, " " $ 1 " " $ 2 " "".., 128) = 128 6706/1: read(19, " 6 " " $ 7 " " $ 8 "".., 128) = 128 6706/1: brk(0x0003B3F8) = 0 6706/1: read(19, " 1 0 ) j a v a ".., 128) = 128 6706/1: read(19, " a - X m s 3 2 m - X".., 128) = 128 6706/1: read(19, " - X m s 3 2 m - X m x".., 128) = 128 6706/1: read(19, " j a v a - X m s 3 2".., 128) = 128 6706/1: read(19, " } "\n\t ; ;\n 1".., 128) = 128 6706/1: read(19, " " $ { 1 2 } " " $ {".., 128) = 128 6706/1: read(19, " " " $ 9 " " $ { 1 0".., 128) = 128 6706/1: brk(0x0003BBF8) = 0 6706/1: read(19, " " " $ 3 " " $ 4 " ".., 128) = 128 6706/1: read(19, " X m x 1 0 2 4 m - c l".., 128) = 48 /bin/sniffer6706/1: write(2, " / b i n / s n i f f e r", 12) = 12 : 6706/1: write(2, " : ", 2) = 2 bad substitution6706/1: write(2, " b a d s u b s t i t u".., 16) = 16 6706/1: write(2, "\n", 1) = 1 6706/1: llseek(0, 0, SEEK_CUR) = 354341 6706/1: _exit(1)Ce semble être là:
Peut être ton fichier ld.config est corrompu ou ne contient pas ce qu'il devrait ou peut être aussi que LD_LIBRARY_PATH surcharge quelque chose quelle ne devrait pas.
Au vu de cela, à ta place je:
- vérifirais ld.config
- enleverais LD_LIBRARY_PATH complètement du système ou sinon au moins pour lancer l'appli.
- et bien sûr utiliserais exclusivement -Djava.library.path en attendant d'y voir plus clair.
Je sais que tu as déjà essayé -Djava.library.path mais LD_LIBRARY_PATH est prioritaire dessus (ce me semble)
le fichier libgen.so.1 est bien présent
dans un premier temps, il est chercher dans :
"/usr/snif/lib/libgen.so.1" Err#2 ENOENTil n'est pas trouvé dans ce répertoire puis dans un deuxième temps dans
"/usr/lib/libgen.so.1" = 0là il est touvé
quant à ld.config il n'existe pas. bon je test tout çà
Au fait cette librairie native, elle est écrite en quoi, C ou C++ ?
Je me demande si tu as la même erreur dans le cas où tu as compilé et dans le cas où tu utilises celle précompilée.
Mêmes symptômes oui, mais même erreur, je commence à me demander.
la librairie libpcap.so est écrite en C
lorsque j'utilise la librairie pré-compilé pour linux, j'ai l'erreur :
PacketCapture: loading native library jpcap.. Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/snif/lib/libjpcap.so: ld.so.1: /LOCAL/java/jdk1.5.0_06/bin/exec/java: fatal: /usr/snif/lib/libjpcap.so: wrong ELF data format: ELFDATA2LSB at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676) at java.lang.Runtime.loadLibrary0(Runtime.java:822) at java.lang.System.loadLibrary(System.java:992) at net.sourceforge.jpcap.capture.PacketCapture.<clinit>(PacketCapture.java:174) at Sniffer.main(Sniffer.java:66)lorque j'utilise la librairie pré-compile (installé par un package) ou celle que j'ai compilé moi même, là j'ai la même erreur du genre :
PacketCapture: loading native library jpcap.. ok Exception in thread "main" java.lang.UnsatisfiedLinkError: lookupDevices at net.sourceforge.jpcap.capture.PacketCapture.lookupDevices(Native Method) at Sniffer.main(Sniffer.java:66)Normal..
J'appelle ça les mêmes symptômes. Peut être que la raison est différente pour chacune.