java调用命令行命令_Java命令行界面(第4部分):命令行
java調(diào)用命令行命令
我的Java命令行解析系列的第四部分介紹了Commandline ,它被描述為 “用于解析命令行參數(shù)的Java庫”,它“基于使用注釋從命令行參數(shù)到對象的映射”。
像以前介紹的args4j和jbock一樣, Commandline使用注釋來提供潛在命令行選項的“定義”。 然而,雖然args4j通過注釋做到這一點的類字段和jbock通過在構(gòu)造函數(shù)及其參數(shù)注解做到這一點,命令行使用的“集”(突變)方法的注釋。 在本文中,我使用Main類示例,如之前有關基于Java的命令行處理的文章中所述,但是在正常情況下,我通常更喜歡使用一個特殊的類來表示命令行參數(shù)。
下面的代碼清單演示了如何在“ get”方法上使用Commandline批注,以實現(xiàn)Commandline命令行處理的“ definition”階段。
命令行處理的命令行“定義”階段
public class Main {/** Is verbosity enabled? */private boolean verbose;/** Name/path of applicable file. */private String fileName;@Option@ShortSwitch("v")@LongSwitch("verbose")@Toggle(true)public void setVerbose(final boolean newVerbose){verbose = newVerbose;}@Option@ShortSwitch("f")@LongSwitch("file")@SingleArgument@Requiredpublic void setFileName(final String newFileName){fileName = newFileName;}上面的代碼清單顯示了命令行注釋@Option以及自定義已定義選項的其他注釋的使用(對于短和長參數(shù), @Required @ShortSwitch和@LongSwitch ;對于強制參數(shù), @SingleArgument @Required用于指定與switch關聯(lián)的一個參數(shù)的@SingleArgument ;以及@Toggle表示該開關的存在或不重要是重要的[沒有與該開關關聯(lián)的參數(shù)]。
下一個代碼清單演示了使用Commandline進行命令行解析的“解析”和“詢問”階段。
使用命令行“解析”和“詢問”
try {// "Parsing" stage.final Main main = CommandLineParser.parse(Main.class, arguments, OptionStyle.LONG_OR_COMPACT);// "Interrogation" stage.out.println("You provided file name of '" + main.fileName+ "' and verbose is set to '" + main.verbose + "'."); } catch (IllegalAccessException | InstantiationException | InvocationTargetException exception) {out.println("ERROR: Unable to parse command-line arguments: " + exception); }最后一個代碼示例演示了使用單個CommandLineParser.parse(Class<T>, String[], OptionStyle)調(diào)用即可完成解析CommandLineParser.parse(Class<T>, String[], OptionStyle)并且查詢與訪問該方法返回的實例成員一樣簡單。 提供給parse方法的第三個參數(shù)很重要,因為它指示解析器如何期望顯示開關。
剛剛顯示的代碼示例使用OptionStyle.LONG_OR_COMPACT ,該文檔描述:“長開關前面有兩個破折號。 短開關前面加一個破折號,可以連接成一個開關。” 相反, OptionStyle.SIMPLE指示解析器期望“所有開關必須是獨立的”和“所有(長和短)開關都必須在命令行前加一個破折號。”
下一個屏幕快照演示了此簡單的應用程序的實際操作。
如果未提供必需的參數(shù),則會顯示一條消息(包括堆棧跟蹤),類似于下一個屏幕快照中所示。
我在此處不包括基于Commandline使用幫助或用法的示例,因為,正如該項目的GitHub頁面所述,“生成幫助文本”是“當前不支持的功能”。
選擇庫以幫助進行Java中的命令行解析時,需要考慮以下Commandline的其他特征。
- Commandline是開源的,并根據(jù)Apache License Version 2.0獲得許可 。
- 當前版本的Commandline( 1.7.0 )至少需要Java SE 7 。
- commandline-1.7.0.jar大小約為38 KB,并且不依賴于任何其他庫。
命令行是Java開發(fā)人員可以使用的大量開源命令行處理庫中??的另一個,并且與其他幾個命令行庫一樣,命令行使用注釋來完成大部分繁重的工作。
其他參考
- GitHub上的命令行
- Maven Central上的命令行
翻譯自: https://www.javacodegeeks.com/2017/06/java-command-line-interfaces-part-4-commandline.html
java調(diào)用命令行命令
總結(jié)
以上是生活随笔為你收集整理的java调用命令行命令_Java命令行界面(第4部分):命令行的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓升级安装包(安卓升级安装)
- 下一篇: java登录界面命令_Java命令行界面