2010-03-15 17 views
9

जब मैं अपने कार्यक्रम में यह निम्न त्रुटिअसंतुष्ट LinkError का कारण क्या है?

 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

+1

क्या आप अपना कोड भी पोस्ट कर सकते हैं (विशेष रूप से 'LibraryLoader.loadJacobLibrary()')? –

उत्तर

20

जावाडोक से दे रहा है चलाने के लिए कोशिश कर रहा हूँ:

फेंक अगर जावा वर्चुअल मशीन के लिए एक उपयुक्त देशी नहीं मिल सकता है मूल रूप से घोषित एक विधि की भाषा परिभाषा।

यह जेएनआई से संबंधित एक त्रुटि है। loadJacobLibrary jacob-1.14.3-x86 नामक देशी लाइब्रेरी को लोड करने का प्रयास कर रहा है और यह java.library.path द्वारा परिभाषित पथ पर नहीं मिला है। जब आप JVM प्रारंभ करते हैं तो इस पथ को सिस्टम प्रॉपर्टी के रूप में परिभाषित किया जाना चाहिए। जैसे

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

Windows पर, वास्तविक देशी पुस्तकालय फ़ाइल याकूब-1.14.3-x86.dll बुलाया जाएगा जबकि लिनक्स पर यह libjacob-1.14.3-x86.so

+0

को इसके बजाय libjacob-1.14.3-x86.so कहा नहीं जाएगा? –

+1

हां ...... फिक्स्ड। – Mark

+0

मैं जोड़ दूंगा कि पथ स्लैश/बैकस्लैश के साथ समाप्त नहीं होना चाहिए - बस निर्देशिका के नाम से (हे भगवान, मैं यह गलती कर रहा था) –

1

आप की जरूरत ही कहा जाता है javaob-1.14.3-x86 लाइब्रेरी आपके जावा लाइब्रेरी पथ पर।

विंडोज़ पर, यह जैकोब-1.14.3-x86.dll होगा।

यह एक बाइनरी फ़ाइल है जिसका प्रयोग जावा द्वारा देशी तरीकों को चलाने के लिए किया जाता है। यह शायद आप जिस लाइब्रेरी (जार) का उपयोग कर रहे हैं, द्वारा आवश्यक है।

here में आप न केवल एक जार, बल्कि जार द्वारा आवश्यक बाइनरी भी देख सकते हैं। अपने मंच के लिए एक उठाओ।

0

http://www.velocityreviews.com/forums/t143642-jni-unsatisfied-link-error-but-the-method-name-is-correct.html के शब्दों में:

वहाँ दो चीजें हैं जो UnsatisfiedLinkError कारण कर रहे हैं। एक है जब System.loadLibrary() लाइब्रेरी को लोड करने में विफल रहता है, दूसरा तब होता है जब JVM लाइब्रेरी में एक विशिष्ट विधि खोजने में विफल रहता है। त्रुटि संदेश का पाठ ही इंगित करेंगे जो मामले है ...

त्रुटि जो आप स्पष्ट रूप से वर्णन बिल्कुल पुस्तकालय नहीं मिल रहा। जैसा कि अन्य ने कहा है, इसे अपने जावा लाइब्रेरी पथ में शामिल करें।

अन्य त्रुटि — पुस्तकालय पाया जा सकता है जब लेकिन पुस्तकालय के भीतर विधि नहीं मिला है — इस प्रकार दिखता है:

java.lang.UnsatisfiedLinkError: myObject.method([Ljava/lang/Object;)V 

इस मामले या तो आप गलत विधि नाम में, या करना होगा वापस जाएं और विधि जोड़ें और कोड को दोबारा सम्मिलित करें ...

संबंधित मुद्दे