2016-04-26 2 views
1

I die adapter.so laden, die bündigJNA 3.0.9 .so (64bit) laden, die zu einer anderen .so (64 Bit) bezieht sich

lib 
|- adapter.so 
|- hal.so 
zur anderen

public interface CA extends Library { 
     CA INSTANCE = (CA) Native.loadLibrary(
       (Platform.isWindows() ? "HashAdapterC" : "adapter"), CA.class); 
     int full_hash(byte[] data, long size, int algorithm, byte[] result, IntByReference res_size); 
    } 

Bibliothek liegen gelten

adapter.so bezieht sich auf hal.so aber beim Aufruf adapter.so ich einen Fehler - nicht gefunden Bibliothek hal.so

-Linux localhost.localdomain 3.10.0-229.el7.x86_64 # 1 SMP Fr Mär 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

-jna 3.0.9

-java Version "1.7.0_79" Java (TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot (TM) 64-Bit-Server VM (Build 24.79-b02, mixed mode)

jar mit diesem Java-kompiliert (1.7.0_79 64bit)

+0

Normalerweise können Sie 'System.loadLibrary()' verwenden, um die Abhängigkeit zu laden, dann wird der JNA-Ladevorgang ordnungsgemäß ausgeführt. – technomage

+0

"/opt/jdk1.7.0_79/bin/java -cp"/usr/testLib/* "-Djava.library.path ="/usr/testLib "-Dfile.encoding = UTF-8 net.nvcm.itHash. rmi.server.ItHashServer ItHashServiceProvider 2015 "es ist Befehl für run .... – 6azbljlb

Antwort

0

wenn symbolische Verknüpfung für .so im Verzeichnis erstellen/usr/lib/es funktioniert

ln -s /usr/testLib/libHAL.so /usr/lib/libHAL.so 
ln -s /usr/testLib/libadapter.so /usr/lib/libadapter.so 
+0

Haben Sie versucht,' System.load ("/ usr/testLib/libHAL.so") 'vor der JNA-Initialisierung? – technomage

+0

cool, es funktioniert !!!! thnks – 6azbljlb

Verwandte Themen