मैं विंडोज़ पर जावा 7 के लिए वाइल्डकार्ड विस्तार व्यवहार का एक अजीब व्यवहार देखता हूं।विंडोज़ पर जावा 7 कमांडलाइन के लिए टूटा वाइल्डकार्ड विस्तार (7?)
सदियों से "*" बनाम * के बीच एक साफ अंतर था।
ऐसा लगता है कि यह जावा 7 (कम से कम विंडोज 7 पर) के लिए सही नहीं है।
wildcard classpath का उपयोग करते समय मैंने समस्या देखी।
वाइल्डकार्ड-क्लासपाथ उद्धृत करने के बावजूद यह विस्तारित हो जाता है।
इस प्रकार जावा एप्लिकेशन में वाइल्डकार्ड पास करने के लिए ऐसा संभव नहीं लगता है।
तो java -cp "somewhere/*"
का उपयोग विफल हो जाएगा (जैसा कि "somewhere\*"
है)।
एक वर्कअराउंड लगता है: java -cp "somewhere/*;"
जो विस्तार को रोकता है।
व्यवहार को सत्यापित करने के लिए मैंने एक छोटी ईको.जावा कक्षा लिखी।
मैंने पाया कि जावा 1.6.0 उद्धृत "*" और सादा * अपेक्षित काम करता है, जबकि जावा 7 पर मुझे हमेशा विस्तारित वाइल्डकार्ड मिला। अब तक यह विंडोज 7 पर देखा गया था, पता नहीं एक्सपी पर क्या होता है।
समस्या उत्पन्न होती है, क्योंकि विंडोज़ पर वाइल्डकार्ड कभी भी अंधेरे युग सीएमडी.एक्सईई (जैसे यूनिक्स पर कोई भी खोल नहीं करता) द्वारा कभी विस्तार नहीं किया जाता है। इसके बजाय प्रत्येक निष्पादन योग्य को setargv.obj का उपयोग करके इसे स्पष्ट रूप से करना है।
- Multiple command line wildcard expansion confuses Windows users
- setargv.obj wildcard handling broken
इस किसी और के द्वारा मनाया जाता है:
मैं दो संबंधित मुद्दों जो एक समान समस्या का वर्णन करने लगते हैं पाया?
या क्या इसे नियंत्रित करने के लिए कुछ अस्पष्ट विंडोज या बैच-फ़ाइल सेटिंग्स हैं?
आहार।
यदि आप पर्यावरण चर '_JAVA_LAUNCHER_DEBUG' लॉन्चर सेट करते हैं तो क्लासपाथ का विस्तार करने के बारे में अतिरिक्त जानकारी दिखाई देगी। शायद यह समझने में मदद करेगा कि java.exe के अंदर क्या हो रहा है। – Mersenne
यह एक संबंधित है http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=7020954 –
'_JAVA_LAUNCHER_DEBUG' का उपयोग करके यह भी दिखाता है कि' "*" 'decays: जावा-सीपी। इको "*" कमांड लाइन तर्क: argv [0] = सी: \ प्रोग्राम फ़ाइलें \ जावा \ jdk1.7 \ bin \ java.exe argv [1] = -cp argv [2] =। argv [3] = इको argv [4] = Echo.class argv [5] = Echo.java – Ditz