2010-10-05 14 views
10

में जावा ऐप चलाने के दौरान ग्लोब विस्तार से कैसे बचें I ग्रहण रन कॉन्फ़िगरेशन के अनोखे व्यवहार में चल रहा हूं, और यह विंडोज़-केवल समस्या है। मैं की तरह, कि आदेश पंक्ति तर्क बाहर प्रिंट एक जावा अनुप्रयोग है मान लीजिए निम्नलिखित:ग्रहण

public class WildCard { 
    public static void main(String[] args) { 
     for (String arg: args) { 
      System.out.println(arg); 
     } 
    } 
} 

अगर मैं एक वाइल्डकार्ड है जो खोल से विस्तार किया जा सकता के साथ तर्क प्रदान करते हैं खोल यह विस्तार और इसे करने के लिए दे देंगे जावा प्रोग्राम यह कोई आश्चर्य नहीं है। तो, अगर मैं कमांड प्रॉम्प्ट

java WildCard test/* 

पर कर कार्यक्रम

test/foo.txt 
test/bar.txt 

जहां foo.txt और bar.txt निर्देशिका "परीक्षण" में फ़ाइलें हैं प्रिंट होगा।

यदि मैं उद्धरण में वाइल्डकार्ड तर्क को घेरता हूं तो शैल विस्तार को रोका जा सकता है; * निक्स पर सिंगल कोट्स, और विंडोज़ पर डबल कोट्स। विंडोज के लिए तो, अगर मैं कमांड प्रॉम्प्ट पर निम्न कार्य करें:

java WildCard "test/*" 

कार्यक्रम अब

test/* 

(कोई विस्तार) प्रिंट होगा।

हालांकि, मुझे क्या लगता है कि एक्लिप्स रन लॉन्चर में उद्धरण का कोई प्रभाव नहीं पड़ता है, और तर्क अभी भी विस्तारित है। अगर मैं ग्रहण रन लांचर में कार्यक्रम तर्क खंड में

"test/*" 

रखा, और इसके बाद के संस्करण वर्ग चलाने के लिए, मैं अभी भी

test/foo.txt 
test/bar.txt 

दूसरे शब्दों में, दोहरे उद्धरण चिह्नों जब भटक गए हैं कार्यक्रम वास्तव में चलाता है। ऐसा लगता है कि केवल विंडोज के साथ ही होता है।

क्या विंडोज़ पर एक्लिप्स रन लॉन्चर के साथ ग्लोब विस्तार को रोकने का कोई तरीका है?

+0

मुझे विश्वास है कि यह ग्रहण के साथ एक बग है, लेकिन यह देखना चाहता था कि समस्या के लिए व्यवहार्य कामकाज है या नहीं। – sjlee

+0

बैकस्लाश के साथ वाइल्डकार्ड से बचने का मेरा सुझाव वास्तव में काम नहीं करता है। यह ** ** परीक्षण किए गए परीक्षण मामले में काम करता है (और मुझे अभी भी पता नहीं क्यों) लेकिन अन्य मामलों में नहीं। मैं अपना जवाब हटा रहा हूं क्योंकि यह वास्तव में समस्या को हल नहीं कर रहा है। – Grodriguez

+4

मुझे इस पर एक मौजूदा ग्रहण बग मिला ... http: // goo।gl/eM6e – sjlee

उत्तर

0

समस्या काफी वायर्ड दिखता है:

*.txt 
foo.* 

नहीं विस्तार किया जाएगा, लेकिन

* 
*.* 
"*" 
"*.*" 
\"*\" 
\"*.*\" 

विस्तार किया जाएगा।

ऐसा लगता है कि केवल "सभी फाइलें" का विस्तार किया गया है, लेकिन अन्य सभी तार (* सहित) अपरिवर्तित रहेगा।

मैं एक ही समस्या में हूँ और मैं XP का उपयोग करें और ग्रहण 3.5.2

0

पैटर्न (.*) ग्रहण करके विस्तारित नहीं किया जाएगा, और अभी भी एक regex के रूप में काम करता है।