2011-01-20 3 views
22

मैं एक सॉफ्टवेयर एप्लीकेशन विकसित कर रहा हूं जो जांचता है कि आपने किस प्रकार का सॉफ़्टवेयर स्थापित किया है, लेकिन ऐसा करने के लिए, मुझे पता होना चाहिए कि ओएस 32 बिट या 64 बिट ओएस है या नहीं। मैंने System.getProperty ("os.arch") की कोशिश की; लेकिन फिर मैंने पढ़ा कि यह आदेश केवल हमें जेडीके/जेआरई का साक्षी दिखाता है, न कि ओएस स्वयं। यदि आप मुझे बता सकते हैं कि किस ओएस का उपयोग किया जा रहा है (विंडोज 7, मैक ओएस, उबंटू इत्यादि ...) जो कि बस कमाल सी होगा:मैं जावा का उपयोग कर अपने ओएस के सीढ़ी की जांच कैसे कर सकता हूं ?? (J2SE, os.arch नहीं)

+0

आप असली विंडोज पर अंतर्निहित ओएस की वास्तुकला प्राप्त करना चाहते हैं, तो निम्न तर्क का उपयोग खैर हाँ, मैंने यही सोचा, लेकिन फिर मैंने यह लिंक देखा, तुम मील ght इसे देखना चाहते हैं: http://mark.koli.ch/2009/10/javas-osarch-system-property-is-the-bitness-of-the-jre-not-the-operating-system.html मुझे बताएं कि आप क्या सोचते हैं –

+0

आप एक वैकल्पिक उत्तर स्वीकार करना चाहेंगे। – assylias

उत्तर

42
System.getProperty("os.arch"); 

सभी प्लेटफार्मों पर उपलब्ध होना चाहिए, अधिक जानकारी के लिए जावा System Properties Tutorial देखते हैं।

लेकिन 64 बिट विंडोज प्लेटफार्म जेवीएम में झूठ बोलेंगे यदि यह 32 बिट जेवीएम है। असल में 64 बिट विंडोज 64 बिट ओएस पर पुराने 32 बिट प्रोग्राम ठीक से काम करने में मदद के लिए पर्यावरण के बारे में किसी भी 32 बिट प्रक्रिया से झूठ बोलेंगे। अधिक जानकारी के लिए MSDN article about WOW64 पढ़ें।

WOW64 के परिणामस्वरूप, 32 बिट जेवीएम कॉलिंग System.getProperty("os.arch") "x86" लौटाएगा।

String arch = System.getenv("PROCESSOR_ARCHITECTURE"); 
String wow64Arch = System.getenv("PROCESSOR_ARCHITEW6432"); 

String realArch = arch != null && arch.endsWith("64") 
        || wow64Arch != null && wow64Arch.endsWith("64") 
         ? "64" : "32"; 

भी देखें:

HOWTO: Detect Process Bitness

Why %processor_architecture% always returns x86 instead of AMD64

Detect whether current Windows version is 32 bit or 64 bit

+0

मुझे मैक ओएसएक्स पर रीयल आर्च लाइन पर एनपीई मिलती है :( – user2693017

+0

हमारे पिछले कार्यान्वयन से बेहतर काम करता है। धन्यवाद! – CMerrill

+0

मैं माफ़ी मांगना चाहता हूं, इस बार मैंने आपका जवाब सही उत्तर के रूप में चुना था! लेकिन अब यह किया गया है (: –

1

प्लैटफॉर्म विशिष्ट किए बिना ऐसा करने का कोई तरीका नहीं है। this पृष्ठ पर अंतिम पोस्ट पर एक नज़र डालें (समाधान वहां विशिष्ट है)।

संपत्ति os.name आपको प्रयुक्त ऑपरेटिंग सिस्टम, os.version संस्करण का नाम देता है।

-1

आप

System.getProperty("sun.arch.data.model"); 

इस लाइन रिटर्न 32 या 64 जो पहचान करती है कि JVM या तो 32 या 64 बिट्स है फोन करके देख सकते हैं।

+3

'सूर्य' से शुरू होने वाली सिस्टम गुण मानक नहीं हैं। – Isaac

+5

आगे, ओपी ओएस के बारे में है, JVM – leonbloy

2

os.arch ओएस का सीधा नहीं है, इस समाधान से सावधान रहें! http://mark.koli.ch/2009/10/javas-osarch-system-property-is-the-bitness-of-the-jre-not-the-operating-system.html

+0

नहीं, जबकि यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, [यह बेहतर होगा] (// meta.stackoverflow.com/q/8259) यहां उत्तर के आवश्यक हिस्सों को शामिल करने के लिए , और संदर्भ के लिए लिंक प्रदान करते हैं। –

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

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