दिलचस्प पोस्ट
कैसे सरणी में दोनों मूल्य और कुंजी को धक्का एक UIView एनीमेशन रद्द करें? मेमोरीस्ट्रीम को लोकप्रिय बनाने में आउटऑफममेरी अपवादः 16 जीबी सिस्टम पर 256 एमबी आवंटन PHPMailer: SMTP त्रुटि: एसएमटीपी होस्ट से कनेक्ट नहीं हो सका DequeueReusableCellWithIdentifier में प्रविष्टि विफलता: forIndexPath: गतिशील रूप से एक टेपटेरा स्क्रॉल करना सी में एक variadic फ़ंक्शन का आवेश अग्रेषित करें एक वेब कर्मचारी को ऑब्जेक्ट पास करना त्रुटि 1066: सुअर, जेनेरिक समाधान में अन्य नाम के लिए हेरेटर को खोलने में असमर्थ जावास्क्रिप्ट 'बाइंड' विधि का उपयोग करें ईवेंट हैंडलर निष्पादन का आदेश आप कैसे एचटीटीपी कॉन्टेक्ट कर सकते हैं केवल कुकीज / जावा वेबएप में कुकीज़? jQuery के क्लिक ईवेंट मोबाइल ब्राउज़र में काम नहीं कर रहा है HTML5 और जावास्क्रिप्ट के साथ वीडियो से फ्रेम कैप्चर करें कैसे numpy में रिकॉर्ड सरणी में सीएसवी को पढ़ने के लिए?

कैसे जावा में कमांड लाइन तर्क पार्स करने के लिए?

जावा में कमांड लाइन तर्क को पार्स करने का एक अच्छा तरीका क्या है?

वेब के समाधान से एकत्रित समाधान "कैसे जावा में कमांड लाइन तर्क पार्स करने के लिए?"

इनकी जांच करें:

या अपना अपना रोल करें:


उदाहरण के लिए, यह है कि आप commons-cli का इस्तेमाल करके 2 स्ट्रिंग तर्क को पार्स करते हैं:

 import org.apache.commons.cli.*; public class Main { public static void main(String[] args) throws Exception { Options options = new Options(); Option input = new Option("i", "input", true, "input file path"); input.setRequired(true); options.addOption(input); Option output = new Option("o", "output", true, "output file"); output.setRequired(true); options.addOption(output); CommandLineParser parser = new DefaultParser(); HelpFormatter formatter = new HelpFormatter(); CommandLine cmd; try { cmd = parser.parse(options, args); } catch (ParseException e) { System.out.println(e.getMessage()); formatter.printHelp("utility-name", options); System.exit(1); return; } String inputFilePath = cmd.getOptionValue("input"); String outputFilePath = cmd.getOptionValue("output"); System.out.println(inputFilePath); System.out.println(outputFilePath); } } 

कमांड लाइन से उपयोग:

 $> java -jar target/my-utility.jar -i asd Missing required option: o usage: utility-name -i,--input <arg> input file path -o,--output <arg> output file 

हाल ही में जेकॉमडर पर एक नज़र डालें

मैंने इसे बनाया। मुझे प्रश्न या सुविधा अनुरोध प्राप्त करने में प्रसन्नता हो रही है

मैं जावा सीएलआई पार्सर की सूची को बनाए रखने की कोशिश कर रहा हूं।

  • एयरलाइन
  • argparse4j
  • argparser
  • args4j
  • clajr
  • CLI-पार्सर
  • CmdLn
  • कमांड लाइन
  • DocOpt.java
  • डॉल्फिन निकोल
  • डीपीएमएल सीएलआई (जकार्ता कॉमन्स सीएलआई 2 फोर्क)
  • डा। मथायस लॉक्स
  • जकार्ता कॉमन्स सीएलआई
  • jargo
  • jargp
  • jargs
  • जावा-getopt
  • jbock
  • JCLAP
  • jcmdline
  • jcommander
  • jcommando
  • ज्वेलक्ली (मेरे द्वारा लिखित)
  • आसान सरल
  • jsap
  • naturalcli
  • ऑब्जेक्ट मॉन्टर सीएलआई लेख (रिफैक्टरिंग और टीडीडी के बारे में अधिक)
  • पार्स-cmd
  • ritopt
  • Rop
  • ते-कोड कमांड
  • पिकोओक्ली में एएनएसआई रंगीन उपयोग सहायता और स्वत: पूर्ण है

मैंने नियुक्ति का उपयोग किया है और इसे काफी आसान पाया है: http://jopt-simple.sourceforge.net/

सामने वाले पृष्ठ में लगभग 8 वैकल्पिक पुस्तकालयों की एक सूची भी प्रदान की जाती है, उन्हें बाहर की जाँच करें और जो आपके ज़रूरतों के अनुरूप है, उसे चुनें।

किसी ने मुझे हाल ही में args4j की ओर इशारा किया है जो कि एनोटेशन आधारित है। मुझे वास्तव में यह पसंद है!

कॉमन्स सीएलआई प्रोजेक्ट पर एक नज़र डालें, वहां बहुत सारी अच्छी चीजें हैं।

यीप।

मुझे लगता है कि आप ऐसा कुछ ढूंढ रहे हैं: http://commons.apache.org/cli

अपाचे कॉमन्स सीएलआई लाइब्रेरी कमांड लाइन इंटरफेस प्रसंस्करण के लिए एपीआई प्रदान करती है।

शायद ये

  • पिकासोली "एक शक्तिशाली छोटे कमांड लाइन इंटरफ़ेस" Picocli जावा के लिए एक कमांड लाइन तर्क पार्सर पुस्तकालय है – एएनएसआई रंग उपयोग सहायता और कमांड लाइन समापन के साथ। नेस्टेड उप आदेशों, विस्तृत उपयोगकर्ता पुस्तिका और पिकोला के जार के आधार पर बचने के स्रोत के रूप में शामिल करने की क्षमता भी उल्लेखनीय है।
  • जावा के लिए जर्ज कमांड लाइन विकल्प पार्सिंग सूट – यह छोटा प्रोजेक्ट जावा प्रोग्राम्स के इस्तेमाल के लिए कमांड लाइन ऑप्शन पार्सर्स का सुविधाजनक, कॉम्पैक्ट, प्री-पैक और व्यापक दस्तावेज सुइट प्रदान करता है। प्रारंभ में, जीएनयू-शैली 'डूओप' के साथ संगत पार्सिंग प्रदान की जाती है।

  • ritopt, जावा के लिए परम विकल्प पर्सर – हालांकि, कई कमांड लाइन विकल्प मानकों का प्रीपाइज किया गया है, आरिपॉप ऑप्टिकल पैकेज में निर्धारित नियमावली का अनुसरण करता है।

यह बज़ेल परियोजना के हिस्से के रूप में Google की कमांड लाइन पार्सिंग लाइब्रेरी है। निजी तौर पर मुझे लगता है कि यह सबसे अच्छा है, और एपाचे क्ली से कहीं ज्यादा आसान है।

https://github.com/pcj/google-options

स्थापना

Bazel

 maven_jar( name = "com_github_pcj_google_options", artifact = "com.github.pcj:google-options:jar:1.0.0", sha1 = "85d54fe6771e5ff0d54827b0a3315c3e12fdd0c7", ) 

Gradle

 dependencies { compile 'com.github.pcj:google-options:1.0.0' } 

Maven

 <dependency> <groupId>com.github.pcj</groupId> <artifactId>google-options</artifactId> <version>1.0.0</version> </dependency> 

प्रयोग

एक ऐसा वर्ग बनाएँ जो OptionsBase बढ़ाता है और आपके @Option (एस) को परिभाषित करता है।

 package example; import com.google.devtools.common.options.Option; import com.google.devtools.common.options.OptionsBase; import java.util.List; /** * Command-line options definition for example server. */ public class ServerOptions extends OptionsBase { @Option( name = "help", abbrev = 'h', help = "Prints usage info.", defaultValue = "true" ) public boolean help; @Option( name = "host", abbrev = 'o', help = "The server host.", category = "startup", defaultValue = "" ) public String host; @Option( name = "port", abbrev = 'p', help = "The server port.", category = "startup", defaultValue = "8080" ) public int port; @Option( name = "dir", abbrev = 'd', help = "Name of directory to serve static files.", category = "startup", allowMultiple = true, defaultValue = "" ) public List<String> dirs; } 

तर्कों को पार्स करें और उनका उपयोग करें।

 package example; import com.google.devtools.common.options.OptionsParser; import java.util.Collections; public class Server { public static void main(String[] args) { OptionsParser parser = OptionsParser.newOptionsParser(ServerOptions.class); parser.parseAndExitUponError(args); ServerOptions options = parser.getOptions(ServerOptions.class); if (options.host.isEmpty() || options.port < 0 || options.dirs.isEmpty()) { printUsage(parser); return; } System.out.format("Starting server at %s:%d...\n", options.host, options.port); for (String dirname : options.dirs) { System.out.format("\\--> Serving static files at <%s>\n", dirname); } } private static void printUsage(OptionsParser parser) { System.out.println("Usage: java -jar server.jar OPTIONS"); System.out.println(parser.describeOptions(Collections.<String, String>emptyMap(), OptionsParser.HelpVerbosity.LONG)); } } 

https://github.com/pcj/google-options

यदि आप gnu getopt से परिचित हैं, तो यहां पर एक जावा पोर्ट है: http://www.urbanophile.com/arenn/hacking/download.htm ऐसा कुछ वर्ग दिखाई देता है जो ऐसा करता है: http://docs.sun.com/source/816-5618-10/netscape/ldap/util/GetOpt.html , http://xml.apache.org/xalan -j / apidocs / org / अपाचे / xalan / xsltc / cmdline / getopt / GetOpt.html

आप इस मेटा-लेख को एक कूदते हुए बिंदु के रूप में दिलचस्प महसूस कर सकते हैं:

http://furiouspurpose.blogspot.com/2008/07/command-line-parsing-libraries-for-java.html

मैंने एक और लिखा: http://argparse4j.sourceforge.net/

Argparse4j जावा के लिए एक कमांड लाइन तर्क पार्सर पुस्तकालय है, पायथन के argparse पर आधारित है।

एयरलाइन @ गिथूब अच्छा लग रहा है एनोटेशन के आधार पर और git कमांड लाइन संरचनाओं का अनुकरण करने का प्रयास करते हुए।

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

खरीदें या निर्माण करें?

बहुत सी उपयोगिता जैसी अनुप्रयोग शायद अतिरिक्त बाहरी निर्भरता से बचने के लिए अपनी कमांड लाइन पार्सिंग रोल करते हैं।

पिकोकली दिलचस्प हो सकता है यह एक uberjar में छायांकन जार के लिए एक सरल विकल्प के रूप में स्रोत के रूप में शामिल करने के लिए बनाया गया है।

एक और फीचर जिसे आप पसंद कर सकते हैं इसका रंगीन उपयोग सहायता है

ANSI रंगों के साथ न्यूनतम उपयोग सहायता

पार्सर विशेषताएं:

  • टिप्पणी आधारित: पार्सिंग कोड की एक पंक्ति है
  • पूरी तरह से टाइप किया गया सब कुछ – कमांड लाइन विकल्पों के साथ-साथ स्थितिगत पैरामीटर
  • पॉसिक्स क्लस्टर्ड कम विकल्प ( <command> -xvfInputFile साथ ही <command> -x -v -f InputFile )
  • एक एरीटी मॉडल जो एक न्यूनतम, अधिकतम और चर पैरामीटर की अनुमति देता है, जैसे, "1..*" , "3..5"
  • उप आदेशों (मनमाने ढंग से गहराई के लिए नेस्टेड किया जा सकता है)
  • जावा 5 और उच्चतर के साथ काम करता है

एनोटेशन (प्रोग्रामिंग के बिना) के साथ उपयोग सहायता संदेश को आसान बनाना है उदाहरण के लिए:

विस्तारित उपयोग सहायता संदेश ( स्रोत )

मैं यह दिखाने के लिए एक और स्क्रीनशॉट जोड़ने का विरोध नहीं कर सकता कि कौन से सहायता सहायता संदेश संभव हैं। उपयोग की सहायता आपके आवेदन का चेहरा है, इसलिए रचनात्मक बनें और मज़ेदार हों!

पिकासोली डेमो

अस्वीकरण: मैंने पिकोली को बनाया है प्रतिक्रिया या प्रश्न बहुत स्वागत है

यदि आप कुछ हल्के (जार आकार ~ 20 केबी) और प्रयोग करने में आसान चाहते हैं, तो आप तर्क-पार्सर की कोशिश कर सकते हैं। यह उपयोग के अधिकतर मामलों में उपयोग किया जा सकता है, तर्क में एरे निर्दिष्ट करने का समर्थन करता है और किसी भी अन्य पुस्तकालय पर कोई निर्भरता नहीं है। यह जावा 1.5 या इसके बाद के संस्करण के लिए काम करता है अंश नीचे इसका उपयोग करने के तरीके पर एक उदाहरण दिखाता है:

 public static void main(String[] args) { String usage = "--day|-d day --mon|-m month [--year|-y year][--dir|-ds directoriesToSearch]"; ArgumentParser argParser = new ArgumentParser(usage, InputData.class); InputData inputData = (InputData) argParser.parse(args); showData(inputData); new StatsGenerator().generateStats(inputData); } 

और उदाहरण यहां पाये जा सकते हैं

Argparse4j सबसे अच्छा मुझे मिल गया है। यह अजगर ऑर्गर्पे लिबरी की नकल करता है जो बहुत ही ठोस और शक्तिशाली है।