JNA java.lang.UnsatisfiedLinkError и указанный модуль не найден

Я собираю банку, которая позволит мне вызывать команды, доступные только для нативных (в банке используются нативы, а не реальная программа). Теперь я столкнулся с проблемой всякий раз, когда я загружаю DLL. Вот ошибка:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'myDLL.dll': The specified module could not be found.

at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:194)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:283)
at com.sun.jna.Library$Handler.<init>(Library.java:142)
at com.sun.jna.Native.loadLibrary(Native.java:368)
at com.sun.jna.Native.loadLibrary(Native.java:353)
at src.NativeBridgeJar.<clinit>(NativeBridgeJar.java:6)
at src.Main.main(Main.java:6)

Я не знаю, какова причина этой ошибки. Я убедился, что указал путь к родной библиотеке к папке с нативной. У кого-нибудь есть идея? Заранее спасибо!


person user2306911    schedule 24.04.2013    source источник


Ответы (4)


A) при вызове Native.loadLibrary() можно указать сокращенное имя ("myDll"), имя файла ("myDll.dll") или абсолютный путь к общей библиотеке ("c :/users/me/myDll.dll").

Б) Если вы не указали абсолютный путь к библиотеке, вы можете сообщить ей, где загрузить DLL, указав jna.library.path или сделав ее доступной на java.library.path (есть другие варианты, описанные в NativeLibrary javadoc).

person technomage    schedule 24.04.2013

Вы должны показать JVM местоположение вашей DLL. Это можно сделать с аргументом -Djava.library.path=pathToDll VM

person Evgeniy Dorofeev    schedule 24.04.2013

У меня была та же проблема, пока я не поместил свой файл .dll в C:\Windows\System32, поскольку это была DLL C++ и в этой папке были зависимости от Kernel32.dll и MSVCR100.dll. Казалось, это сработало.

person Fuzzy Analysis    schedule 23.05.2013

В дополнение к установке пути к dll с помощью -Djava.library.path=pathToDll или System.setProperty("jna.library.path","pathToDll"); убедитесь, что в вашей Windows установлен конкретный распространяемый пакет Visual C++ xxxx (потому что собственные библиотеки Windows должны были быть созданы с помощью определенного VisualStudio xxxx)

person nav3916872    schedule 10.06.2017