当我尝试运行我的程序时,它会出现以下错误
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.<clinit>(JacobObject.java:108)
at javaSMSTest.main(javaSMSTest.java:18)
请帮助
答案 0 :(得分:21)
来自Javadoc:
如果Java虚拟机无法找到声明为native的方法的适当本机语言定义,则抛出该文件。
这是与JNI相关的错误。 loadJacobLibrary正在尝试加载名为jacob-1.14.3-x86的本机库,并且在java.library.path定义的路径上找不到它。启动JVM时,应将此路径定义为系统属性。 e.g。
-Djava.library.path=<dir where jacob library is>
在Windows上,实际的本机库文件将被称为jacob-1.14.3-x86.dll,而在Linux上它将被称为libjacob-1.14.3-x86.so
答案 1 :(得分:1)
您需要在java库路径上使用jacob-1.14.3-x86库。
在Windows上,这将是jacob-1.14.3-x86.dll。
这是一个二进制文件,java用它来运行本机方法。你正在使用的某些库(jar)可能需要它。
在here中,您不仅可以看到jar,还可以看到jar所需的二进制文件。选择适合您平台的那个。
答案 2 :(得分:0)
有两件事导致UnsatisfiedLinkError。一个是什么时候 System.loadLibrary()无法加载库,另一个是当时 JVM无法在库中找到特定方法。的文本 错误信息本身将指示是哪种情况......
您描述的错误显然无法找到库。正如其他人所说,将它包含在Java库路径中。
另一个错误 - 当找到库但找不到库中的方法时 - 看起来如下:
java.lang.UnsatisfiedLinkError: myObject.method([Ljava/lang/Object;)V
在这种情况下,您要么使用了错误的方法名称,要么必须返回并添加方法并重新编译代码......