Я пытаюсь использовать JNI для доступа к методам С++ из класса Java. Я могу скомпилировать (как в Eclipse, так и в командной строке) свой класс Java в порядке, но при выполнении класса во время выполнения я получаю:
Исключение в потоке «основной» java.lang.UnsatisfiedLinkError: com.domain.services.CallServiceAPIS.createSession()I в com.domain.services.CallServiceAPIS.createSession(собственный метод) в com.domain.services.CallServiceAPIS.main(CallServiceAPIS .java:18)
Java-код выглядит следующим образом:
package com.domain.services;
public class CallServiceAPIS {
static {
System.loadLibrary("service.client");
}
public native int createSession();
public static void main(String[] args) {
System.out.println(System.getProperty("java.library.path"));
new CallServiceAPIS().createSession();
}
}
Я включил распечатку java.library.path только для того, чтобы убедиться, что она указывает на правильное расположение библиотеки C++ - и это так. Я также попытался установить LD_LIBRARY_PATH в своей среде Eclipse. Но ни то, ни другое не сработало.
Обратите внимание, что вызов System.loadLibrary работает, поскольку 1) код компилируется и 2) ошибка возникает в строке 18, которая является новым вызовом CallServiceAPI.
Код С++:
int createSession(const PosServiceInfo info, const SessionArgs& args, Domain::UUID& uuidSession)
{
return int::undefined;
}
Есть идеи?