2010-03-15 202 views
9

當我試圖運行我的程序它給了以下錯誤什麼是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.<clinit>(JacobObject.java:108) 
at javaSMSTest.main(javaSMSTest.java:18) 

請幫助

+0

請更改您的標題,以便更明確 – chburd 2010-03-15 10:40:12

+1

您是否也可以發佈代碼(特別是'LibraryLoader.loadJacobLibrary()')? – 2010-03-15 10:41:32

回答

20

從的Javadoc:

時拋出的Java虛擬機無法找到合適的本地一種聲明爲native的方法的語言定義。

這是一個與JNI相關的錯誤。 loadJacobLibrary正在嘗試加載名爲jacob-1.14.3-x86的本地庫,並且在java.library.path定義的路徑中找不到它。啓動JVM時,應將此路徑定義爲系統屬性。例如

-Djava.library.path=<dir where jacob library is> 

在Windows上,實際的本地庫文件名爲雅各-1.14.3-x86.dll而在Linux上它會被稱爲libjacob-1.14.3-x86.so

+0

不會被稱爲libjacob-1.14.3-x86.so嗎? – 2010-03-15 11:01:20

+1

是......修正。 – Mark 2010-03-15 11:08:35

+0

我會補充說,路徑不應該以斜線/反斜線結尾 - 只要目錄的名稱(哦,上帝,我犯了這個錯誤) – 2017-01-26 11:56:49

1

您需要您的java庫路徑中的jacob-1.14.3-x86庫。

在windows上,這將是jacob-1.14.3-x86.dll。

這是一個由java用來運行本地方法的二進制文件。它可能需要你正在使用的一些庫(jar)。

here中,您不僅可以看到jar,還可以看到jar所需的二進制文件。爲您的平臺選擇一個。

0

引述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 

在這種情況下,你要麼有錯誤的方法名,或將要回去並添加方法並重新編譯代碼...

相關問題