Как мне загрузить собственные библиотеки для JNI, чтобы избежать ошибки UnsatisfiedLinkError?

Вы неправильно называете core-java System.loadLibrary(). Метод loadLibrary принимает имя библиотеки, например java-api «привет» и пытается загрузить jre соответствующий общий объект. В java-native-interface Unix он попытается загрузить .java "libhello.so", а в Windows java - "hello.dll". Ожидается, что j2se файл будет найден в java.library.path.

Метод, который java-native-interface вы, вероятно, собираетесь jre вызвать, - это System.load(), который c берет полное имя файла и core-java загружает его. Этот метод java-api должен принимать в качестве java-se аргумента File, но вместо этого javax он принимает строку. Если java-se вы используете load, вам придется openjdk обрабатывать локальные соглашения java-libraries об именах вручную, но вам .java не придется полагаться на java-native-interface установку java.library.path.

java

c

java-native-interface

2022-07-16T18:51:45+00:00