UnsatisfiedLinkError的原因是什么?
当我试图运行我的程序时,它给出以下错误
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jacob-1.14.3-x86 in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1682) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1030) at com.jacob.com.LibraryLoader.loadJacobLibrary(LibraryLoader.java:184) at com.jacob.com.JacobObject.(JacobObject.java:108) at javaSMSTest.main(javaSMSTest.java:18)
请帮忙
来自Javadoc:
如果Java虚拟机无法找到声明为native的方法的适当本机语言定义,则抛出此exception。
这是与JNI相关的错误。 loadJacobLibrary正在尝试加载名为jacob-1.14.3-x86的本机库,并且在java.library.path定义的路径上找不到它。 启动JVM时,应将此路径定义为系统属性。 例如
-Djava.library.path=
在Windows上,实际的本机库文件将被称为jacob-1.14.3-x86.dll,而在Linux上它将被称为libjacob-1.14.3-x86.so
您需要在java库路径上使用jacob-1.14.3-x86库。
在Windows上,这将是jacob-1.14.3-x86.dll。
这是一个二进制文件,java用它来运行本机方法。 您可能需要使用某些库(jar)。
在这里,您不仅可以看到jar,还可以看到jar所需的二进制文件。 选择适合您平台的产品。
引用http://www.velocityreviews.com/forums/t143642-jni-unsatisfied-link-error-but-the-method-name-is-correct.html :
有两件事导致UnsatisfiedLinkError。 一种是当System.loadLibrary()无法加载库时,另一种是当JVM无法在库中找到特定方法时。 错误消息本身的文本将指示是哪种情况……
您描述的错误显然无法找到库。 正如其他人所说的那样,将它包含在Java库路径中。
另一个错误 – 当找到库但找不到库中的方法时 – 看起来如下:
java.lang.UnsatisfiedLinkError: myObject.method([Ljava/lang/Object;)V
在这种情况下,您要么具有错误的方法名称,要么必须返回并添加方法并重新编译代码…