2010-11-06 16 views
9

मैं एक जार से पुस्तकालय कैसे लोड कर सकता हूं? उदा।जार से लोड लाइब्रेरी

Test.jar 
+- libAbc.so 
+- libDef.so 
+- ... 
+1

संभावित डुप्लिकेट [कैसे एक जार फ़ाइल बनाने के लिए जिसमें डीएलएल फाइलें शामिल हैं] (http://stackoverflow.com/questions/1611357/how-to-make-a-jar-file-that-include-dll-files) –

+1

[जेएआर से डीएलएल निकालें और लोड करें] का संभावित डुप्लिकेट (http://stackoverflow.com/questions/4764347/extract-and-load-dll-from-jar) – Raedwald

उत्तर

1

मूल निवासी कोड अंतर्निहित ऑपरेटिंग सिस्टम द्वारा लोड किया जा रहा है, और अगर है कि कोड एक जार-फाइल के अंदर झांक सकते नहीं कर सकते बाइट्स आप लोड करना चाहते हैं लेने के लिए - जो विंडोज नहीं कर सकते हैं - आप इसे में सुलभ बनाना चाहिए फाइल सिस्टम स्वयं।

क्या आप अपनी जार फ़ाइल के बगल में अपनी लाइब्रेरी तैनात कर सकते हैं?

0

पुस्तकालयों को फाइल सिस्टम से लोड किया जाना चाहिए। तो आप जार से अपनी लाइब्रेरी को एक अस्थायी निर्देशिका में निकाल सकते हैं और इसे लोड कर सकते हैं।

6

आपको इसे कुछ अस्थायी डीआईआर में उपयोग करना होगा और 'System.load ("path/to/libAbc.so") का उपयोग करना होगा।

यह discussed previously रहा है।

संपादित: लिंक को सही किया गया।

+0

आपकी 'पहले चर्चा की गई' लिंक दिखाई नहीं दे रही है प्रासंगिक –

+0

क्षमा करें, मेरी गलती। लिंक को सही किया गया है। –

7
शायद

नहीं जवाब आप के लिए देख रहे हैं (एक अस्थायी स्थान करने के लिए फ़ाइल निकालने जवाब आप के लिए देख रहे है), लेकिन मैंने सोचा कि मैं कुछ असली दुनिया अनुभव को साझा करेंगे:

पाइपलाइन की आवश्यकता जार से पुस्तकालय निकालने के लिए, सुनिश्चित करें कि यह बाद में साफ हो जाता है, जार का उपयोग करने वाले अन्य अनुप्रयोगों के साथ संघर्ष नहीं करता है ... आदि बहुत मुश्किल है। यह किया जा सकता है, लेकिन संभावनाएं बहुत अच्छी हैं कि आप अपने पुस्तकालयों की कई अस्थायी प्रतियों के साथ उपयोगकर्ता के सिस्टम को अव्यवस्थित कर देंगे, या आप पुस्तकालयों का उपयोग करके कई ऐप्स के बीच संघर्ष के साथ हवादार हो जाएंगे।

जब आप इस तथ्य को जोड़ते हैं कि कई ऑपरेटिंग सिस्टम किसी भी फ़ाइल को लाइब्रेरी के रूप में उपयोग करने की अनुमति नहीं देते हैं (और अक्सर, आपके ऐप को चलाने वाले उपयोगकर्ता के लिए अनुमतियां उन्हें मनमानी फ़ाइल को चिह्नित करने की अनुमति नहीं देती हैं निष्पादन के लिए अस्थायी फ़ोल्डर में), जार के अंदर देशी पुस्तकालयों को पैकेजिंग का विचार कम आकर्षक हो जाता है।

हम जो अंततः घायल हो रहे थे, उस मॉडल में स्थानांतरित हो रहा था जहां हमारे इंस्टॉलर ( पर्याप्त अनुमतियों के साथ चलते हैं) जार के साथ उपयुक्त मूल पुस्तकालय रखें। यह करने के लिए काफी सरल है, सभी निष्पादन पुस्तकालयों को एक ही स्थान पर रखता है, और प्रशासन करना और समझना आसान है (एक अनुप्रयोग में एक संस्करण असंगतता को ट्रैक करने की कोशिश कर रहा है b/c यह एक लाइब्रेरी को लोड करने की कोशिश कर रहा है जो अस्थायी भंडारण में सहेजा गया था एक दूसरे आवेदन से कुल दुःस्वप्न है)।

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