我已经使用JNI从Java程序成功调用了一个包含在dll中的方法。这就是我的所作所为:
public class MyClass {
static {
System.load("C:/Users/pabloruiz/library.dll");
System.loadLibrary("library"); // This works too if the dll is in the Java Build Path
}
public native void foo();
public static void main(String[] args) {
new MyClass().foo(); // invoke the native method
}
}
现在我正在尝试使用Tomcat在Web应用程序中执行相同的操作。我尝试使用绝对路径和相对路径,将dll放在WEB-INF / lib中,在Properties-> Java Build Path中选择它,但它不起作用。顺便说一句,我正在研究Eclipse。
这是我得到的错误:
java.lang.UnsatisfiedLinkError: com.example.MyClass.foo()
编辑:
显然,它创建了dll,因为如果我将名称更改为不存在的名称,我会收到错误,告诉我无法找到dll。根据我的理解,它无法在dll中找到方法foo(),这很奇怪,因为正如我上面所说,同样的dll可以从一个简单的java程序(不是Web应用程序)中运行。