我在java程序调用dll成功,而在swt下调用dll失败,请部怎么回事?
报错内容如下:
Exception in thread "main "
java.lang.UnsatisfiedLinkError: no DLLSample in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682)
at java.lang.Runtime.loadLibrary0(Runtime.java:822)
at java.lang.System.loadLibrary(System.java:992)
at shell.TestDll. <clinit> (TestDll.java:7)
at shell.Math$1.widgetSelected(Math.java:33)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:928)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3348)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2968)
at shell.Math.main(Math.java:45)
我的调用程序如下:
package shell;
public class TestDll {
static
{
System.loadLibrary( "DLLSample ");//载入dll
}
public native static int DoubleValue(int i);//函数声明
}
------解决方案--------------------用java.library.path指定你的DLL的位置。
-Djava.library.path=path_to_your_dll
------解决方案--------------------最简单的是把SWT.JAR中的几个DLL解压缩出来放在 windows/system32 及windows/system 在windows中JAVA会从该2个目录中去加载一些库文件。如果不想那就用2楼的方法在Eclipse启动该程序的Arguments页中的VM arguments中指定那几个你解压缩出来的dll目录的文件夹路径,方法为-Djava.library.path=path_to_your_dll