2011-11-14 10 views
24

पर कमांड लाइन तर्कों पर उत्तीर्ण करने के लिए मैंने एक ग्रहण परियोजना से एक चलने योग्य JAR बनाया जो किसी दिए गए XML फ़ाइल को संसाधित करता है और सादा पाठ निकालता है। हालांकि, इस संस्करण के लिए आवश्यक है कि फ़ाइल को कोड में हार्ड-कोड किया जाए।रनने योग्य JAR

इस

java -jar wiki2txt enwiki-20111007-pages-articles.xml 

की तरह कुछ करते हैं और जार xml फ़ाइल पर अमल करने के लिए एक तरीका है?

मैंने कुछ लोगों को देखा है, और दिए गए सभी उदाहरणों को कमांड लाइन पर जेएआर संकलित करने के साथ करना है, और तर्कों में गुजरने के साथ कोई भी सौदा नहीं करता है।

उत्तर

29

क्यों नहीं?

तर्क प्राप्त करने और तर्क पर कार्य करने के लिए बस अपने Main-Class को संशोधित करें।

public class wiki2txt { 

    public static void main(String[] args) { 

      String fileName = args[0]; 

      // Use FileInputStream, BufferedReader etc here. 

    } 
} 

कमांडलाइन में पूरा पथ निर्दिष्ट करें।

java -jar wiki2txt /home/bla/enwiki-....xml 
+0

स्पष्टीकरण के लिए धन्यवाद। केवल पिछले बार मुझे जावा प्रोग्राम के लिए तर्क डालना पड़ा था, ग्रहण-केवल निष्पादन के माध्यम से। उनमें से कोई भी स्टैंडअलोन उत्पाद नहीं था, और मुझे एहसास नहीं हुआ कि एक ही सिद्धांत सच है। – Jason

+0

क्यों "इनपुटस्ट्रीम इनपुटस्ट्रीम = MyClass.class.getResourceAsStream (तर्क [0]);" काम नहीं? –

+0

@AththurEirich यह एक अलग सवाल की तरह लगता है। अपने "तर्क [0]" को प्रिंट करें .. अगर वह सही मान प्रिंट करता है, तो आप एक जार फ़ाइल में कमांडलाइन तर्क सफलतापूर्वक पास करने में सक्षम थे। – Kal

4

आप कमांड लाइन पर कार्यक्रम तर्क गुजरती हैं और इस तरह से उन्हें अपने जावा अनुप्रयोग में प्राप्त कर सकते हैं:

:

public static void main(String[] args) { 
    String pathToXml = args[0]; 
.... 
} 

वैकल्पिक रूप से आप के लिए कमांड लाइन बदलकर एक प्रणाली संपत्ति पारित java -Dpath-to-xml=enwiki-20111007-pages-articles.xml -jar wiki2txt

और अपने मुख्य वर्ग के लिए:

public static void main(String[] args) { 
    String pathToXml = System.getProperty("path-to-xml"); 
.... 
} 
0

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

26

आप कमांड लाइन पर जावा प्रॉपर्टी, यानी पर्यावरण चर सेट भी कर सकते हैं और आसानी से इसे अपने कोड में कहीं भी इस्तेमाल कर सकते हैं।

ग: /> जावा जार -Dmyvar = enwiki-20,111,007-पृष्ठों-articles.xml wiki2txt

और जावा कोड पहुँचता

कमांड लाइन इस तरह से की जाएगी इस तरह का मान:

String context = System.getProperty("myvar"); 

इस प्रश्न को argument passing in Java के बारे में देखें।

+3

एक जावा संपत्ति एक पर्यावरण चर नहीं है। वे एक ही उद्देश्य की सेवा कर सकते हैं, लेकिन वे विभिन्न प्रकार की चीजें हैं। – devdanke

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