एक छोटी सी पृष्ठभूमि: मैं एक जावा अनुप्रयोग है कि मैक पर एक तीसरे पक्ष के हार्डवेयर से बात करने की आवश्यकता है। उन्होंने मुझे एसडीके दिया है लेकिन यह जावा में नहीं है। तो मैं jnilib बनाने की कोशिश कर रहा हूं जो मेरे जावा एप्लिकेशन और एसडीके के बीच एक पुल के रूप में कार्य करेगा।मैक + JNI + जावा
मुद्दा: मैं एक छोटा सा नमूना jnilib कि एसडीके से बात लेकिन बना दिया है जब मैं अपने जावा कार्यक्रम में इसका इस्तेमाल करने की कोशिश मैं निम्न त्रुटि
Exception in thread "main" java.lang.UnsatisfiedLinkError: /Users/john.doe/Desktop/eclipse/workspace/Lesson13_Jni_Smart7/bin/libSmartTest7.jnilib: Library not loaded: build/Release/SMARTResponseSDK.framework/Versions/A/SMARTResponseSDK Referenced from: /Users/john.doe/Desktop/eclipse/workspace/Lesson13_Jni_Smart7/bin/libSmartTest7.jnilib
Reason: image not found
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1827)
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1742)
at java.lang.Runtime.loadLibrary0(Runtime.java:823)
at java.lang.System.loadLibrary(System.java:1045)
at com.learning.lesson13.JniSmart7.<clinit>(JniSmart7.java:6)
त्रुटि यह की तरह लग रहा से मिलता है मेरी libSmartTest7.jnilib
पुस्तकालय SMARTResponseSDK
के लिए देख रहा है।
मैंने को आजमाया है, मुझे पता है कि लाइब्रेरी SMARTResponseSDK
मेरे मैक पर है। मैंने इसे ग्रहण में अपने काम करने वाले फ़ोल्डर में कॉपी करने की कोशिश की लेकिन मुझे अभी भी त्रुटि मिल गई है। मैंने -DJava.library.path
का उपयोग करने का प्रयास किया है लेकिन मुझे अभी भी त्रुटि मिलती है।
क्या सबसे अच्छा संभव दृष्टिकोण होगा पर कोई भी विचार।
पर OSX पुस्तकालय या तो java.library.path या DYLD_LIBRARY_PATH वातावरण चर के भीतर मिल जाना चाहिए। आपको यह सुनिश्चित करने के लिए अपनी लाइब्रेरी भी जांचनी चाहिए कि यह निर्भर पुस्तकालय के लिए एक विशिष्ट पूर्ण पथ का उपयोग नहीं कर रहा है (जब तक कि यह सिस्टम-स्थापित स्थान में न हो)। आपकी टिप्पणी के लिए – technomage
हाय धन्यवाद। मुझे खेद है लेकिन ऐसा लगता है कि यह मेरी गलती थी। दो "SMARTResponseSDK" पुस्तकालय थे। ऐसा लगता है कि मैंने अपनी जेनिलीब बनाते समय गलत इस्तेमाल किया था। मैंने अन्य "SMARTResponseSDK" का उपयोग किया और समस्या को साफ़ कर दिया गया प्रतीत होता है। – user1216750
आप रोकाकोआ पर भी विचार कर सकते हैं, जो आपको किसी भी मूल कोड को लिखने और सीधे जावा से तृतीय-पक्ष लाइब्रेरी तक पहुंचने से बचने देता है। – technomage