दिलचस्प पोस्ट
उपस्थिति कब स्विफ्ट में स्विफ्ट क्यों "वापसी list.sort ()" वापस क्यों नहीं, कोई सूची नहीं? स्प्रिंग डाटा के मोंगोटेमप्लेट और मोंगो रिपॉजिटरी में क्या अंतर है? क्रॉस-ऑरिजन अनुरोध पर अवरुद्ध थ्रेड के अंदर हैंडलर नहीं बना सकता जिसे Looper.prepare () नहीं कहा गया है C ++ स्थानीय चर के संदर्भ को लौटाना php – एक गूंज स्ट्रिंग में एक चर डालें मैं एएसपी.नेट एमवीसी में पिछली कार्रवाई कैसे करूं? Laravel 5 में सभी दृश्यों को डेटा कैसे प्राप्त करें? std :: vector बनाम std :: सरणी में सी ++ एंड्रॉइड स्टूडियो में जेक्सएक्सिंग को एकीकृत करें टाइमआउट XMLHttpRequest जावा कस्टम सीरियललाइज़ेशन ओरेकल में बहु-पंक्ति डालने का सबसे अच्छा तरीका है? कैसे कुछ php सामग्री डेमो करने के लिए github पर .html के बजाय .php पृष्ठ को प्रकाशित करें?

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

मैं जावा में एक कमांड-लाइन-एप्लिकेशन लिखूंगा इस एप्लिकेशन को मापदंडों और आज्ञाओं के मिश्रण के साथ काम करना चाहिए, जैसे svn समान।

उदाहरण

 app url command1 app url command2 --parameter2 -x app url command1 --param-with-argument argument app --parameter url command1 app --no-url command2 app --help 

चाहता था

  • जावा के लिए उपयोग में आसान लाइब्रेरी मौजूद है
  • ऐसे कमांड लाइनों के पार्सिंग का समर्थन करता है
  • (बोनस) स्वचालित रूप से एक उपयुक्त मदद बनाता है

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

मैं कॉमन्स सीएलआई के प्रशंसक हूं

आप इसे कमांड, झंडे (संक्षिप्त और लंबे नामों के साथ) समझने के लिए सेट कर सकते हैं, चाहे कुछ कमांड / स्विच की आवश्यकता हो, या यदि उनके पास डिफ़ॉल्ट मान हैं इसमें एक उपयोगी --help प्रकार के संदेश को प्रिंट करने के लिए भी कार्यक्षमता है।

उपयोग परिदृश्य पेज में इसका कुछ अच्छा उदाहरण है कि इसका उपयोग कैसे किया जा सकता है।

args4j आज़माएं: http://args4j.kohsuke.org

मैं कॉमन्स सीएलआई के लिए args4j पसंद करता args4j । (और मैंने दोनों का उपयोग किया है।)

args4j साथ, आपको किसी भी फ़ंक्शन को कॉल करने की आवश्यकता नहीं है। सब कुछ आपके लिए किया! (पैरामीटर प्रतिबिंब के माध्यम से खेतों को ऑब्जेक्ट करने के लिए सेट हैं।)

यहां एक अपेक्षाकृत अप टू डेट (अगस्त 2017 तक) पुस्तकालयों की सूची है जो आपके प्रश्न का उत्तर देती है।

  • JArgs
  • जकार्ता कॉमन्स सीएलआई
  • ते-कोड (इसमें एक कमांड लाइन पार्सिंग लाइब्रेरी है।)
  • argparser
  • जीएनयू मिलन के जावा पोर्ट
  • Args4J
  • JSAP
  • आसान सरल
  • CLAJR
  • CmdLn
  • JewelCli
  • JCommando
  • पार्स-cmd
  • JCommander
  • पिकासोली (2017) ने एएनएसआई रंगों के साथ उपयोग में मदद की है, और स्वत: पूर्ण

यदि आप एक सिफारिश की तलाश कर रहे हैं, तो मैं सुझाव है कि सरल या गहनकली

ज्वेलसीएलआई कमांड लाइन पार्सिंग के लिए एक जावा लाइब्रेरी है जो स्वच्छ कोड उत्पन्न करती है । यह आपके कमांड-लाइन पैरामीटर के लिए प्रकार-सुरक्षित एपीआई को गतिशील रूप से बनाने के लिए एनोटेशन के साथ कॉन्फ़िगर प्रॉक्सीड इंटरफेस का उपयोग करता है।

उदाहरण पैरामीटर इंटरफ़ेस Person.java :

 import uk.co.flamingpenguin.jewel.cli.Option; public interface Person { @Option String getName(); @Option int getTimes(); } 

पैरामीटर इंटरफ़ेस का एक उदाहरण उपयोग Hello.java :

 import static uk.co.flamingpenguin.jewel.cli.CliFactory.parseArguments; import uk.co.flamingpenguin.jewel.cli.ArgumentValidationException; public class Hello { public static void main(String [] args) { try { Person person = parseArguments(Person.class, args); for (int i = 0; i < person.getTimes(); i++) System.out.println("Hello " + person.getName()); } catch(ArgumentValidationException e) { System.err.println(e.getMessage()); } } } 

ऊपर की फ़ाइलों की एक प्रतिलिपि को एक ही निर्देशिका में सहेजें और JewelCLI 0.7.6 JAR को उस निर्देशिका में भी डाउनलोड करें।

लिनक्स / मैक ओएस एक्स / इत्यादि पर बैश में उदाहरण को संकलित करें और चलाएं:

 javac -cp jewelcli-0.7.6.jar:. Person.java Hello.java java -cp jewelcli-0.7.6.jar:. Hello --name="John Doe" --times=3 

Windows कमांड प्रॉम्प्ट में उदाहरण को संकलित करें और चलाएं:

 javac -cp jewelcli-0.7.6.jar;. Person.java Hello.java java -cp jewelcli-0.7.6.jar;. Hello --name="John Doe" --times=3 

उदाहरण चलाना निम्नलिखित आउटपुट देना चाहिए:

 Hello John Doe Hello John Doe Hello John Doe 

पूर्णता के लिए चलो JCommander जोड़ते हैं https://github.com/cbeust/jcommander

 public class JCommanderTest { @Parameter public List<String> parameters = Lists.newArrayList(); @Parameter(names = { "-log", "-verbose" }, description = "Level of verbosity") public Integer verbose = 1; @Parameter(names = "-groups", description = "Comma-separated list of group names to be run") public String groups; @Parameter(names = "-debug", description = "Debug mode") public boolean debug = false; } 

और एक उदाहरण उपयोग

 CommanderTest jct = new JCommanderTest(); String[] argv = { "-log", "2", "-groups", "unit", "a", "b", "c" }; new JCommander(jct, argv); Assert.assertEquals(jct.verbose.intValue(), 2); 

यह भी देखने लायक है – जॉप-सरल

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

कमांडलाइन पर आधारित एनोटेशन है, तर्कों के संयोजन (अनुक्रम, घोंसले के शिकार, तर्क, प्रकार, …) के संयोजन के लिए जटिल नियमों की अनुमति देता है और यह काफी अच्छी तरह से प्रलेखित है।

इसका इस्तेमाल करने के लिए, जोड़ें

 <dependency> <groupId>com.github.jankroken</groupId> <artifactId>commandline</artifactId> <version>1.7.0</version> </dependency> 

अपने पोम के लिए, और उपलब्ध विकल्पों को निम्नानुसार घोषित करें:

 public class CommandOptions { private List<String> commands = null; private boolean parameter = false; private boolean url = true; private boolean help = false; @LooseArguments public void setCommands(List<String> commands) { this.commands = commands; } @LongSwitch("parameter") @Toggle(true) public void setParameter(boolean parameter) { this.parameter=parameter; } @LongSwitch("noURL") @Toggle(false) public void setUrl(boolean url) { this.url = url; } @longSwitch("help") @Toggle(true) public void setHelp(boolean help) { this.help = help; } // getters } 

और फिर वास्तव में कमांड लाइन को पार्स करने के लिए करते हैं

 public final static void main(String[] args) { try { CommandOptions options = CommandLineParser.parse(CommandOptions.class, args, OptionStyle.SIMPLE); // and then you can pass options to your application logic... } catch ... } } 

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

जेएसएपी मेरे लिए बहुत अच्छा लग रहा है

http://sourceforge.net/projects/jsap/

मैं एक ऐसी परियोजना के लिए एयरलिफ्ट का उपयोग कर रहा हूं जिस पर मैं काम कर रहा हूं, काफी अच्छी तरह काम करता है:

https://github.com/airlift/airline

सरल मेवेन निर्भरता जिसे आपको जोड़ने की आवश्यकता है:

 <dependency> <groupId>io.airlift</groupId> <artifactId>airline</artifactId> <version>0.6</version> </dependency> 

और इसके बाद यह एनोटेशन आधारित है और साथ ही मदद टेक्स्ट को प्रदर्शित करने का एक बहुत ही साफ तरीका है।

यदि यहां उपयोगी है तो यहां एक उदाहरण देख सकते हैं:

https://github.com/mneedham/neo4j-web-importer/blob/master/src/main/java/org/neo4j/dataimport/Neo4jImporter.java

यहां एक जावा डिओपेट http://www.urbanophile.com/arenn/hacking/download.html भी है