ambuotiz
19-09-2005, 23:45
Ho scritto una classe Java che si chiama Ipktgen, utilizzando le JNI richiamo del codice scritto in C. Per poter funzionare la JNI, il codice C deve essere compilato in una libreria, in questo caso la libLpktgen.so.
Sinteticamente il funzionamento è questo: scrivo un file C, lo compilo in una libreria e dal codice java carico questa libreria.
Credo che l'errore sia dovuto a questo: la classe Ipktgen carica la libreria libLpktgen.so ma il caricamento si blocca quando incontra la riga di codice "libnet_init". libnet_init è una funzione primitiva utilizzata da una libreria che ho importato correttamente nel file C, quindi non capisco perchè non ne riconosce il significato, sapete aiutarmi?
[root@localhost codice]# java Ipktgen
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/java/j2sdk1.4.2_08/jre/lib/i386/client/libLpktgen.so: /usr/java/j2sdk1.4.2_08/jre/lib/i386/client/libLpktgen.so: undefined symbol: libnet_init
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1586)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1511)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at Ipktgen.<clinit>(Ipktgen.java:4)
Sinteticamente il funzionamento è questo: scrivo un file C, lo compilo in una libreria e dal codice java carico questa libreria.
Credo che l'errore sia dovuto a questo: la classe Ipktgen carica la libreria libLpktgen.so ma il caricamento si blocca quando incontra la riga di codice "libnet_init". libnet_init è una funzione primitiva utilizzata da una libreria che ho importato correttamente nel file C, quindi non capisco perchè non ne riconosce il significato, sapete aiutarmi?
[root@localhost codice]# java Ipktgen
Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/java/j2sdk1.4.2_08/jre/lib/i386/client/libLpktgen.so: /usr/java/j2sdk1.4.2_08/jre/lib/i386/client/libLpktgen.so: undefined symbol: libnet_init
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1586)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1511)
at java.lang.Runtime.loadLibrary0(Runtime.java:788)
at java.lang.System.loadLibrary(System.java:834)
at Ipktgen.<clinit>(Ipktgen.java:4)