У меня есть dll (назовем его Sample.dll), который вызывается приложением Java через JNA. Указанная DLL находит файл в папке с именем «Данные». Я думаю, что указанный DLL был загружен успешно, так как не было возвращено сообщение об ошибке. Ниже приведен код для загрузки DLL:
sampleLibrary = (SampleLibrary)Native.loadLibrary("Sample", SampleLibrary.class);
После выполнения этого кода вызывается собственный метод для открытия сеанса. Этот метод принимает путь к папке в качестве параметра.
sampleLibrary.openSession(path);
JNA не может найти файл, так как возвращается ошибка, которая говорит, что файл не существует. Я пытаюсь установить и распечатать «user.dir» и «java.library.path», чтобы проверить, является ли пройденный путь правильным.
System.setProperty("java.library.path", "C:/Sample");
System.out.println("user.dir property: " + System.getProperty("user.dir"));
System.out.println("java.library.path property: " + System.getProperty("java.library.path"));
Возвращает рабочий каталог, в котором находятся jar, dll и папка Data.
Структура файла:
C:\Sample
\-- SampleJna.jar
\-- Sample.dll
\-- Data
\----- some files