2011-11-22 13 views
16

वहाँ कि को रोकने के लिए जावा स्थापना दिनचर्या एक रास्ता है (उदाहरण के लिए JDK-7u1-windows-i586.exe) प्रतियां java.exe C:\Windows\system32 निर्देशिका में?विंडोज़ 'system32 में java.exe को कैसे रोकें?

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

अब तक, मैंने अपने कंप्यूटर से क्लाइंट की मशीन पर पहले से स्थापित जेआरई की प्रतिलिपि बनाई है।

+0

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

+2

@selbie: यह * इस तरह से स्थापित किया जा सकता है, लेकिन यह नहीं है कि इंस्टॉलर डिफ़ॉल्ट रूप से करता है: यह * जेआरई को अपनी निर्देशिका में स्थापित करता है लेकिन * * 'java.exe' को' system32' पर कॉपी करता है निर्देशिका। –

+0

@selbie: इंस्टॉलर अतिरिक्त रूप से कुछ रजिस्ट्री कुंजी बनाता है। मुझे विंडोज़ के लिए एक साधारण ** ज़िप संग्रह ** नहीं मिला जो इंस्टॉलर के बजाए इस्तेमाल किया जा सकता था। – rmoestl

उत्तर

3

तुम बस JRE प्रदान कर सकते हैं आप अपने सॉफ़्टवेयर पर उपयोग करना चाहते हैं और:

  • सेट JAVA_HOME चर से पहले आप अपने आवेदन सही java.exe फाइल करने के लिए
  • प्वाइंट चलाने (जैसे ..\jre1.5.0_22\bin\java <your_java_main>)

यह उदाहरण के लिए * .bat फ़ाइल में किया जा सकता है।

आपके द्वारा बनाई गई * .bat फ़ाइल चलाने के बाद, अन्य सभी जावा संस्करण को अनदेखा कर दिया जाएगा और इससे कोई फर्क नहीं पड़ता कि कौन से संस्करण हैं, या उस पीसी पर स्थापित होंगे।

+1

यह केवल यह सुनिश्चित करेगा कि * मेरा आवेदन * सही जेआरई का उपयोग करता है। मशीन पर पहले से इंस्टॉल किए गए अन्य एप्लिकेशन तोड़ सकते हैं यदि वे JAVA_HOME सेट नहीं करते हैं और डिफ़ॉल्ट जेआरई का उपयोग करने पर भरोसा करते हैं जो आमतौर पर _system32_ में होता है। लेकिन अगर मैं एक नया जेआरई (संभवतः बीटा संस्करण) स्थापित करता हूं तो ** java.exe ** को सिस्टम 32 में कॉपी किया गया है और इसके परिणामस्वरूप अन्य जावा एप्लिकेशन बीटा जेआरई का उपयोग कर सकते हैं। यही समस्या है। – rmoestl

+0

यदि मुझे गलत नहीं है, तो JAV_HOME' पर्यावरण चर केवल जेडीई का उपयोग करते समय जरूरी है, जेआरई नहीं। विंडोज रजिस्ट्री –

+0

से जावा डिफ़ॉल्ट पथ प्राप्त करने के लिए जेआरई स्वचालित रूप से सिस्टम प्रॉपर्टी 'java.home' का उपयोग करता है, केवल एक सीएमडी सत्र की अवधि के लिए 'SET' के साथ बाध्यकारी परिवर्तन, इसलिए यह अन्य अनुप्रयोगों को प्रभावित नहीं करेगा। आप यह सुनिश्चित कर सकते हैं कि उपयोगकर्ता आपके बैच फ़ाइल के अंत में 'बाहर निकलने' को कॉल करके उसी cmd सत्र से किसी अन्य एप्लिकेशन को लॉन्च करने का प्रयास नहीं करता है। – vaughandroid

0

एक तरीका मैं कोशिश करूंगा कि एकमात्र खाली फ़ाइल को java.exe नाम के साथ System32 फ़ोल्डर में बनाना होगा।

+0

यह एक विकल्प नहीं होगा। क्या होगा अगर "असली" java.exe पहले से ही system32 में है। – rmoestl

+0

ठीक है, इसे केवल पढ़ने के लिए सेट करें? – Esko

7

मैं कल पता चला वहाँ विंडोज पर जावा संस्करणों के साथ एक समस्या यह है कि जैसा कि आप जानते तिथि करने के लिए इन दिनों जावा रखने के लिए महत्वपूर्ण है, विशेष रूप से इंटरनेट विंडोज system32 या syswow64 फ़ोल्डर में स्थित अन्वेषक द्वारा प्रयोग किया जाता JRE।

आप अपने सी: ड्राइव में जावा के लिए एक खोज कर सकते हैं और विभिन्न निष्पादन योग्य फ़ाइलों को देख सकते हैं जो यह निर्धारित करने के लिए पाती हैं कि स्थिति किसी विशिष्ट सिस्टम पर लागू होती है या नहीं।

कुछ शोध मुझे लगता है कि जब जावा अपडेटर रन, यह केवल फाइलों जावा घर में स्थापित अद्यतन करता है, आम तौर पर प्रोग्राम फ़ाइलों पर स्थित करने के बाद, लेकिन यह खिड़कियां प्रणाली में स्थित फ़ाइलों का अद्यतन नहीं करता है फ़ोल्डर। नतीजतन और चूंकि सिस्टम फ़ोल्डर डिफ़ॉल्ट सिस्टम पाथ में है, इसलिए इंटरनेट एक्सप्लोरर का उपयोग जावा फ़ाइलों (java.exe, javaw.exe, javaws.exe) के पुराने संस्करण का उपयोग करना जारी रखता है

समाधाननियंत्रण कक्ष का उपयोग कर जावा अनइंस्टॉल करें अनइंस्टॉल प्रोग्राम सुविधा, नवीनतम संस्करण डाउनलोड करें और इंस्टॉल करें।

चीयर्स! फर्नांडो

+0

मुझे नहीं लगता कि यह मामला है। विंडोज सिस्टम 32 निर्देशिका में केवल java.exe और अन्य जावा लॉन्चर्स हैं। वास्तविक वीएम (jvm.dll) और सहायक पुस्तकालय/कक्षाएं जेडीके/जेआरई निर्देशिका में हैं जो जावा अद्यतनकर्ता द्वारा अपडेट की जाती है। –

0

मुझे पता चला कि नवीनतम जेडीके अभी भी रजिस्ट्री के खिलाफ सही कोड नहीं लिखता है। समस्या यह है कि यदि कंप्यूटर में जेआरई नहीं है, तो जेडीके रजिस्ट्री में जेआरई को सही तरीके से पंजीकृत नहीं करता है।

जेडीके 1.7u72 इंस्टॉल करने वालों के लिए बस त्रुटि संदेश संकेत के रूप में सॉफ्टवेयर \ जावासोफ्ट \ जावा रनटाइम पर्यावरण जोड़ें। और वैल्यू 1.7 के साथ CurrentVersion की स्ट्रिंग एंट्री जोड़ें। और उसके बाद सॉफ़्टवेयर \ JavaSoft \ Java रनटाइम पर्यावरण \ 1.7 जोड़ें और "H: \ Program Files \ Java \ jre7" मान के साथ JavaHome स्ट्रिंग प्रविष्टि डालें। और जेआरई सही ढंग से काम करेगा। ब्लैक ओरेकल, यदि आप रजिस्ट्री का उपयोग करते हैं, तो सही कोड लिखें, अन्यथा रजिस्ट्री का उपयोग न करें!

5

मैं हाल ही में जावा 8 करने के लिए उन्नत और इस समस्या की खोज की के रूप में system32 के तहत जावा संस्करण था अभी भी 7. यह बंद हो जाता है तुम भी संस्करण चला के रूप में यह रजिस्ट्री कुंजी

U:\>java -version 
Error: Registry key 'Software\JavaSoft\Java Runtime Environment'\CurrentVersion' 
has value '1.8', but '1.7' is required. 
Error: could not find java.dll 
Error: Could not find Java SE Runtime Environment. 

कर निम्नलिखित मुझे बताया के बारे में शिकायत जावा अपराधी को:

U:\>where java 
C:\Windows\System32\java.exe 
C:\Program Files\Java\jdk1.8.0_45\bin\java.exe 

मैंने सिस्टम 32 के तहत जावा को हटाकर इस समस्या को हल किया! मुझे यकीन है कि इसका क्या असर होगा।

+3

आप शायद ऐसा करके बनाई गई समस्याओं से अधिक समस्याएं टाल चुके हैं! कार्यक्रम प्रोग्राम दुर्घटना होने के लिए यह बेहतर तरीका है कि आपको जावा के बहिष्कृत संस्करण के साथ चलने वाले बजाए जावा नहीं मिल सकता है और आप इसके बारे में भी अवगत नहीं हैं। – Overdrivr

+0

हमें और क्या हटा देना चाहिए (या अस्थायी फ़ोल्डर में स्थानांतरित करें)? कम से कम java.exe, javaw.exe, javaws।exe, जावास्क्रिप्ट CollectionAgent.dll सही? डीएलएल उपयोग में प्रतीत होता है ताकि इसे स्थानांतरित नहीं किया जा सके। क्या वहां कुछ हैं? – snaran

+0

@snaran कोई खेद नहीं है, यह उस समय मेरे लिए नौकरी थी –

0

आपको बस इतना करना है कि नियंत्रण कक्ष -> प्रोग्राम एक प्रोग्राम अनइंस्टॉल करें। पुराने जावा अपडेट अनइंस्टॉल करें और नवीनतम जावा अपडेट और जावा डेवलपमेंट किट अपडेट रखें। आपके नवीनतम जावा अपडेट और जावा डेवलपमेंट किट अपडेट में एक ही संख्या होनी चाहिए।

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