2009-01-12 9 views
36

मुझे जावा में एक सरल कमांड लाइन एप्लिकेशन लिखने की जरूरत है। यह एक पुस्तकालय है कि पार्स आदेशों का ख्याल रखता है और झंडे और वैकल्पिक/अनिवार्य मानकों जैसी चीजों का ख्याल रखता है ...क्या वहां अच्छी जावा पुस्तकालय हैं जो कमांड लाइन अनुप्रयोगों को बनाने में सुविधा प्रदान करते हैं?

अद्यतन का उपयोग करने के अच्छा होगा

कुछ है कि निर्मित टैब पूरा होने होगा विशेष रूप से महान।

+3

आमतौर पर सीएलआई का अर्थ है कि आपका ऐप चलाने के तरीके में निर्धारित करने के लिए कमांड लाइन से तर्क लेता है। आपके अपडेट के आधार पर, क्या आपका मतलब है कि आप अपने जावा एप्लिकेशन के अंदर एक इंटरैक्टिव शैल-स्टाइल प्रक्रिया चाहते हैं? (irb की तरह?) –

+1

हाँ मैं वास्तव में करता हूं ... आप सही हैं – carrier

+1

आईआरबी इंटरैक्टिव रूबी है। मुझे लगता है कि वाक्यांश "कमांड लाइन" या "क्ली" वाक्यांश का उपयोग किये बिना आपको अपने प्रश्न को दोबारा पूछने से फायदा होगा। शायद "जावा में एक इंटरैक्टिव खोल बनाने के लिए पुस्तकालय हैं?" और स्पष्टता के लिए अपने ऐप का उदाहरण उपयोग दें। –

उत्तर

25

मैंने कमांड लाइन तर्क पार्सिंग के लिए Apache Commons CLI library का उपयोग किया है। इसका उपयोग करना काफी आसान है और reasonably good documentation है।

आप जो लाइब्रेरी चुनते हैं वह शायद आपके द्वारा चुने गए विकल्पों की शैली ("--gnu-style" या "-javac-style") पर आती है।

अद्यतन: picocli TAB completion हाल ही में उपलब्ध हो गया और ब्याज हो सकता है। ओपी में अनुरोध की गई कमांड लाइन पूर्णता प्रदान करने वाली किसी अन्य कमांड लाइन पार्सिंग लाइब्रेरी से अवगत नहीं है।

20

JLine सहायक लग रहा है।

जेएलिन कंसोल इनपुट को संभालने के लिए जावा लाइब्रेरी है। यह बीएसडी एडिटलाइन और जीएनयू रीडलाइन की कार्यक्षमता में समान है। आधुनिक गोले (जैसे बैश और टीसीएसएच) के लिए रीडलाइन/एडिटलाइन क्षमताओं से परिचित लोगों को जेलाइन की अधिकांश कमांड संपादन सुविधाओं को परिचित होने के लिए मिलेगा।

और यह अपने features में सूची टैब पूरा होने से करता है।  

+0

+1; रीडलाइन पहली बात थी जो मेरे लिए दिमाग में आई, और यह जावा समतुल्य प्रतीत होता है। –

4

हमारी कंपनी में हम JewelCli का उपयोग कर रहे हैं जो एक घोषणात्मक शैली में कमांड लाइन इंटरफ़ेस का वर्णन करने के लिए एक एनोटेटेड जावा इंटरफ़ेस परिभाषा का उपयोग करता है।

उपयोग करने के लिए हल्का और सरल, मैं इसकी अनुशंसा करूंगा।

+0

गहने के लिए कोई टैब-पूर्णता नहीं है, यह केवल एक बुनियादी (लेकिन महान) कमांड लाइन तर्क पार्सर है। –

1

कमांड लाइन पार्सिंग के लिए Java port of GNU getopt library है। कमांड संपादन और टीएबी पूरा करने के लिए जेएलइन है (जैसा कि एमएमईर्स पहले से ही अनुशंसित है)।

3

मैंने Java Simple Argument Parser बड़े पैमाने पर उपयोग किया है। यह सभी प्रकार के विकल्प प्रकारों को संभालता है, इसमें एक अच्छी तरह से डिज़ाइन और लाइब्रेरी (कस्टम पार्सर्स लिखने का विकल्प भी शामिल है) है, और जावा डॉक्स और online दोनों में अच्छा प्रलेखन प्रदान करता है।

मुझे लगता है कि टैब पूर्ण करने की आपकी इच्छा कमांड लाइन पार्सिंग लाइब्रेरी की बजाय खोल से ख्याल रखी जाएगी।

0

मैंने JSAP का उपयोग किया है। मैंने इसे स्थिर और अच्छी तरह से प्रलेखित पाया है।

मुझे यकीन नहीं है कि मैं समझता हूं कि "अंतर्निहित टैब पूर्णता" से आपका क्या मतलब है। क्या आप विस्तार से समझा सकते हैं।

1

--jopt-simple पर भी देखने लायक है।

यह 'POSIX getopt() और GNU getopt_long() के कमांड लाइन विकल्प सिंटैक्स का सम्मान करने का प्रयास करता है। ऐसा लगता है कि कुछ समुदाय कर्षण है, विशेष रूप से कमांड लाइन OpenJDK के लिए पसंद का मुक्ति पार्सिंग है।

इसके अलावा, ब्रेट का उल्लेख है, टैब समापन आमतौर पर आपके खोल द्वारा प्रदान किया जाता है - आप वांछित कार्यक्षमता प्रदान करने के लिए खोल कार्यों को लिखेंगे।

पेज। डुप्लिकेट उत्तर के लिए खेद है, लेकिन यह प्रश्न लगभग Java library for parsing command-line parameters?

8

जैसा कि आप एक लाइब्रेरी की तलाश कर रहे हैं जो एक इंटरैक्टिव शैल एप्लिकेशन विकसित करने में आसान है, मैं Cliche का सुझाव दूंगा।

+0

'cliche' सुपर सरल अभी तक बहुत शक्तिशाली है। मेरा यही सुझाव है। – Benj

0

मैंने कुछ पुस्तकालयों की कोशिश की और argparse4j का उपयोग करके समाप्त हो गया। यह पाइथन के argparse का एक बहुत अच्छा जावा पोर्ट है।