Loading 32 or 64 bit JNI Library in Java -


संभव डुप्लिकेट:

मेरे जावा अनुप्रयोग में मुझे एक जेएनआई पुस्तकालय की आवश्यकता है जो 32 बिट और 64 बिट के लिए उपलब्ध है। मैं अपने आवेदन के दो अलग-अलग संस्करणों को नहीं भेजना चाहता हूं इसलिए मैं दोनों लाइब्रेरीज़ के साथ आवेदन पत्र भेजना चाहता हूं और एप्लिकेशन को यह निर्धारित करना होगा कि कौन सा पुस्तकालय लोड करना है (foobar32.so या foobar64.so) मैं ऐसा कैसे करूँ?

मैंने पहले एक को लोड करने की कोशिश करने के बारे में सोचा और अगर यह एक अपवाद फेंकता है तो मैं दूसरे को लोड करता हूं लेकिन यह बदसूरत लग रहा है।

क्या कोई सिस्टम है संपत्ति मैं यह निर्धारित करने के बजाय की जांच कर सकता हूं कि क्या 32 बिट जावा या एक 64 बिट जावा का उपयोग मेरे आवेदन को चलाने के लिए किया जाता है? मुझे पता है कि कुछ os.arch संपत्ति होती है लेकिन रिटर्न वैल्यू के अनुसार बहुत अप्रत्याशित लगता है।

तो आवेदन को तय करने का सबसे अच्छा तरीका क्या है 32 या 64 बिट जेएनआई पुस्तकालय?

क्यों अप्रत्याशित? आप चाहते हैं कि यह केवल 32 बिट सिस्टम है, और इस मामले में यह हमेशा एक्स 86 (निश्चित रूप से x86 प्रोसेसर के लिए) होगा, बाकी सब 64 बिट का मतलब होगा।

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

IMHO os.arch सर्वोत्तम समाधान होगा।

Comments

Popular posts from this blog

qt - switch/case statement in C++ with a QString type -

python - sqlite3.OperationalError: near "REFERENCES": syntax error - foreign key creating -

Python's equivalent for Ruby's define_method? -