我从tutorial NetBeans项目导致异常:线程“main” java.lang.UnsatisfiedLinkError: Unable to load library
“simpleDLL”试图从Java(JNA)使用DLL。无法加载库例外
异常:指定的模块找不到。
试图将simpleDLL.dll放入项目库中,但没有成功复制system32文件夹中的文件。
我从tutorial NetBeans项目导致异常:线程“main” java.lang.UnsatisfiedLinkError: Unable to load library
“simpleDLL”试图从Java(JNA)使用DLL。无法加载库例外
异常:指定的模块找不到。
试图将simpleDLL.dll放入项目库中,但没有成功复制system32文件夹中的文件。
我有完全一样的问题,加载DLL,我解决它以这样的方式
如果DLL是兼容的,那么问题可能出现在您的java库路径中。我把我的DLL到user.dir
目录,然后我用这个代码:
设置Java库路径user.dir
或者也许你想另一条道路:
String myLibraryPath = System.getProperty("user.dir");//or another absolute or relative path
System.setProperty("java.library.path", myLibraryPath);
加载库:
的System.loadLibrary ( “libraryWithoutDLLExtension”);
它为我工作,尝试它,并告诉我,如果它适合你。
请检查simpleDLL是32位还是64位。然后检查JVM是否也是32位或64位。他们必须为同一个平台。
你也可以指定一个绝对路径,如果你改变loadLibrary()
到load()
: http://www.chilkatsoft.com/p/p_499.asp
我只能运行在32位(Xp)。
将文件夹中的DLL “C:\ Windows \ System32下”
helloWorldDLL lib = (helloWorldDLL) Native.loadLibrary("helloworldDLL", helloWorldDLL.class);
如果错误java.lang.UnsatisfiedLinkError中:无法加载库”依旧,使用的Dependency Walker来查看相关的DLL。
请检查simpleDLL是32位或64位。然后检查,如果JVM也为32位或64位,他们必须在同一平台。 –
试图用另一个DLL和JNI,似乎它的工作原理 – Karloss