2016-04-26 4 views
1

я загрузить adapter.so, которые будут применяться к другимЮНА 3.0.9 .so (64-битный) загрузки, который относится к другому .so (64 бит)

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); 
    } 

библиотеки лежат заподлицо

lib 
|- adapter.so 
|- hal.so 

adapter.so относится к hal.so , но при вызове adapter.so я получаю сообщение об ошибке - не удается нашли библиотеку hal.so

-Linux localhost.localdomain 3.10.0-229.el7.x86_64 # 1 SMP Пт Мар 6, 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

-jna 3.0.9

-java версия "1.7.0_79" Java (TM) SE Runtime Environment (сборка 1.7.0_79-b15) Java HotSpot (TM) 64-разрядный сервер VM (сборка 24,79-B02, смешанный режим)

баночку скомпилирован с этим Java (1.7.0_79 64-битной)

+0

Обычно вы можете использовать 'System.loadLibrary()' для загрузки зависимости, тогда загрузка JNA будет работать правильно. – 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 "это команда для запуска .... – 6azbljlb

ответ

0

если создать символическую ссылку для .so в каталоге/USR/Lib/она работает

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

Вы пытались выполнить' System.load ("/ usr/testLib/libHAL.so") 'до инициализации JNA? – technomage

+0

круто, это работает !!!! Thnks – 6azbljlb