日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java命令行界面(第2部分):args4j

發布時間:2023/12/3 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java命令行界面(第2部分):args4j 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在上一篇文章中 ,我研究了如何使用Apache Commons CLI在Java應用程序中解析命令行參數。 在本文中,我將使用另一個庫args4j進行相同的操作。

args4j采用了一種不同于Commons CLI的方式來指定Java應用程序應期望的命令行參數。 盡管Commons CLI期望代表選項的對象將被單獨且顯式實例化,但args4j使用自定義注釋來促進命令行參數處理的這一“定義”階段。 命令行選項應該是類上的實例級字段,并帶有@ org.kohsuke.args4j.Option批注。 每個命令行參數的特征都包含在此@Option注釋的屬性中。

本文中演示的簡單應用程序與我上一篇文章中使用的應用程序相似,并著重于用于指定詳細程度的可選且無值的-v選項,以及所需的-f選項,該選項期望代表文件路徑和名稱的值。 下一個代碼清單演示了如何使用args4j的@Option注釋將這些命令行參數設置為類數據成員上的注釋。

args4j通過@Option注釋定義命令行參數

@Option(name="-v", aliases="--verbose", usage="Print verbose status.") private boolean verbose;@Option(name="-f", aliases="--file", usage="Fully qualified path and name of file.", required=true) private String fileName;

如上面的代碼清單所示,很容易指定選項的名稱,用法以及是否需要(默認是可選的)。 上面的private修飾符的存在使它們很明顯是在類級別定義的屬性。 因為沒有static修飾符,所以我們看到這些是已注釋的實例變量。

要解析命令行選項,只需實例化一個CmdLineParser并將命令行參數傳遞給其parseArguments(String ...)方法:

解析args4j中的命令行參數

final CmdLineParser parser = new CmdLineParser(this); try {parser.parseArgument(arguments); } catch (CmdLineException clEx) {out.println("ERROR: Unable to parse command-line options: " + clEx); }

在剛剛顯示的Java代碼的第一行中, this是對類實例的引用,在該類實例中定義了上面顯示的成員變量并使用@Option注釋@Option注釋。 在這種情況下,我使用this是因為定義這些選項的同一類是調用此解析方法的類。 為了在同一個類中執行此操作,我需要在類中定義一個名為doMain的實例(非static )方法,并由該類的main函數調用該方法(這在本文結尾處的完整代碼清單中顯示)。 從類的main(final String[])函數接收的命令行參數是傳遞給parseArguments(String[])方法的parseArguments(String[])數組。

接下來的兩個屏幕快照演示了基于args4j的上述代碼在解析命令行參數中的應用。 第一張圖片顯示了兩個選項的短選項和長選項的組合。 第二個圖像顯示了自動報告未提供必需的命令行參數的情況。

命令行解析庫的一個重要功能是能夠顯示用法或幫助信息。 下一個代碼清單演示了使用args4j的CmdLineParser.printUsage(OutputStream)方法執行此操作的示例。

使用args4j打印使用情況信息

final CmdLineParser parser = new CmdLineParser(this); if (arguments.length < 1) {parser.printUsage(out);System.exit(-1); }

下一個屏幕快照描述了args4j默認打印出的使用情況信息。

這篇文章演示了如何使用arg4j實現與Java應用程序中的命令行解析有關的一些最常見功能,包括選項“定義”,命令行參數“解析”,對所解析的命令行參數的“詢問”以及幫助/ us與命令行參數有關的詳細信息。 現在顯示了上面在代碼清單中部分表示的類的完整代碼清單。

args4j演示Main.java的完整代碼清單

package examples.dustin.commandline.args4j;import static java.lang.System.out;import org.kohsuke.args4j.CmdLineException; import org.kohsuke.args4j.CmdLineParser; import org.kohsuke.args4j.Option;import java.io.IOException;/*** Demonstrate args4j.*/ public class Main {@Option(name="-v", aliases="--verbose", usage="Print verbose status.")private boolean verbose;@Option(name="-f", aliases="--file", usage="Fully qualified path and name of file.", required=true)private String fileName;private void doMain(final String[] arguments) throws IOException{final CmdLineParser parser = new CmdLineParser(this);if (arguments.length < 1){parser.printUsage(out);System.exit(-1);}try{parser.parseArgument(arguments);}catch (CmdLineException clEx){out.println("ERROR: Unable to parse command-line options: " + clEx);}out.println("The file '" + fileName + "' was provided and verbosity is set to '" + verbose + "'.");}/*** Executable function demonstrating Args4j command-line processing.** @param arguments Command-line arguments to be processed with Args4j.*/public static void main(final String[] arguments){final Main instance = new Main();try{instance.doMain(arguments);}catch (IOException ioEx){out.println("ERROR: I/O Exception encountered: " + ioEx);}} }

這是在選擇框架或庫來幫助Java進行命令行解析時要考慮的args4j的一些其他特征。

  • args4j是開放源代碼,并已獲得MIT許可證 。
  • 當前版本的args4j( 2.33 ) 需要 J2SE 5 。
  • args4j不需要單獨下載或引用任何第三方庫。
  • args4j 2.33主JAR( args4j-2.33.jar )的大小約為152 KB。
  • Maven存儲庫顯示了376個對args4j的依賴關系 ,包括OpenJDK的JMH Core和Jenkins (考慮到川口晃介的參與,這不足為奇)。
  • args4j已經存在了一段時間; 其2.0.3版本于2006年1月發布 ,至少從2003年開始就以某種形式出現。
  • args4j允許通過@Option注釋上的“ hidden ”將命令行參數從使用情況輸出中排除。
  • args4j允許指定和強制執行命令行參數之間的關系。 這包括指定何時不能同時提供兩個參數的能力(“ 禁止 ”),以及僅當還提供了另一個參數時(“ depends ”)才有意義的情況。
  • args4j支持在有限的一組值適用于該選項的情況下使用枚舉類型的類屬性。 @Option文檔在“枚舉開關”部分下說明了如何執行此操作。
  • args4j通過其OptionHandler類提供了命令行參數解析的可擴展性和可定制性。

args4j庫易于使用,并允許高度可讀的代碼。 決定是否使用args4j時,最大的考慮因素可能是確定使用批注指定命令行參數定義的舒適程度。

其他參考

  • args4j
  • args4j下載
  • args4j源代碼 (GitHub)
  • args4j API文檔
  • args4j樣本主

翻譯自: https://www.javacodegeeks.com/2017/06/java-command-line-interfaces-part-2-args4j.html

總結

以上是生活随笔為你收集整理的Java命令行界面(第2部分):args4j的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。