पृष्ठभूमिमैक ओएस एक्स पर जेएनआई लिब लोड हो रहा है?
तो मैं रनटाइम पर मैक ओएस एक्स पर एक jnilib (विशेष रूप से JOGL) जावा में लोड करने का प्रयास कर रहा हूँ। मैं प्रासंगिक स्टैक ओवरफ़्लो सवालों के साथ निम्नलिखित किया गया है:
- Maven and the JOGL Library
- Loading DLL in Java - Eclipse - JNI
- How to make a jar file that include all jar files
मेरे लिए अंतिम लक्ष्य एक जार में मंच विशिष्ट JOGL फ़ाइलें पैकेज और उन्हें अनज़िप करने के लिए है एक अस्थायी निर्देशिका में और स्टार्ट-अप पर उन्हें लोड करें।
File f = new File("/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/libjogl.jnilib");
System.load(f.toString());
f = new File ("/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/libjogl_awt.jnilib");
System.load(f.toString());
मैं निम्नलिखित अपवाद है जब JOGL एपीआई का उपयोग करने का प्रयास कर पाने: मैं बस JOGL हार्ड-कोडेड पथ का उपयोग कर लोड करने का प्रयास करने के लिए वापस मेरी समस्या काम किया
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jogl in java.library.path
लेकिन जब मैं द्वारा java.library.path
निर्दिष्ट निम्नलिखित JVM विकल्प जोड़ना:
-Djava.library.path="/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/"
सब कुछ ठीक काम करता है।
प्रश्न
यह संभव उपयोग System.load
(या कुछ अन्य संस्करण) मैक ओएस एक्स पर -Djava.library.path के लिए एक स्थानापन्न जो रनटाइम पर शुरू हो जाती है के रूप में है?
स्वीट! इसके लिए धन्यवाद, पुस्तकालयों को मैन्युअल रूप से लोड करने से पहले मूल LibLoader.disableLoading() को कॉल करना शानदार ढंग से काम करता है। – Clinton