2

我已经成功地从一个使用 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 的网络应用程序中。我尝试过使用绝对路径和相对路径,将 dll 放在 WEB-INF/lib 中,在 Properties->Java Build Path 中选择它,但它不起作用。顺便说一句,我正在研究 Eclipse。

这是我得到的错误:

java.lang.UnsatisfiedLinkError: com.example.MyClass.foo()

编辑:

显然,它找到了 dll,因为如果我将名称更改为不存在的名称,我会收到一条错误消息,告诉我找不到 dll。据我了解,它在 dll 中找不到方法 foo(),这很奇怪,因为正如我上面所说,同一个 dll 可以从一个简单的 java 程序(不是网络应用程序)中工作。

4

0 回答 0