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

歡迎訪問 生活随笔!

生活随笔

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

java

java登录界面命令_Java命令行界面(第12部分):CLAJR

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

java登錄界面命令

第十二篇有關在Java中處理命令行參數的文章的特色庫是帶有Java Reflection的命令行參數 (CLAJR)。 該“庫”是單個Java源文件( CLAJR-0.9.java ), 可從SourceForge下載 。 CLAJR的主頁當前顯示2006年版權日期,可下載的zip文件源CLAJR-0.9-src.zip的日期為2008年12月6日。盡管近年來CLAJR似乎在很大程度上不受支持,盡管我不太可能選擇CLAJR在本系列中已經討論過的一些用于處理Java代碼的命令行參數的替代庫中,我相信CLAJR值得一提。 即使有些人選擇不使用它,CLAJR也有一些相當獨特的特性使它變得有趣。

CLAJR未作為JAR提供。 而是以單個壓縮文件的形式提供,該ZIP文件中包含單個Java源代碼文件。 作為單個源代碼文件提供不是CLAJR獨有的。 Picocli也以單個Java源代碼文件提供。 但是,Picocli還在Maven存儲庫(我在使用Picocli時使用的存儲庫)上提供了JAR,但我不知道帶有適用于CLAJR的.class文件的預構建JAR。 因此,由于使用第三方庫時,我比源代碼文件更喜歡JAR,因此我在嘗試CLAJR時所做的第一件事是將其提供的源代碼構建為一個小的JAR文件。

這是我使用CLAJR構建JAR的步驟(我必須對源文件進行一些更改,該更改將在本文后面描述):

  • 從SourceForge 下載 CLAJR-0.9-src.zip
  • 解壓縮CLAJR-0.9-src.zip以解壓縮CLAJR-0.9.java
  • 創建目錄clajr來表示Java源類應存在于其中的Java clajr包。
  • CLAJR-0.9.java文件移動到clajr目錄,并將其重命名為CLAJR.java以匹配該源文件中的類的名稱。
    • 我還必須編輯源代碼以進行較小的更改。 這將在后面的文章中詳細討論。
  • 使用javacCLAJR.java文件編譯為多個類文件。
  • 使用jar將已編譯的.class文件組裝成一個JAR(我將其命名為CLAJR-0.9.jar )。
  • 以下兩個屏幕快照說明了上述步驟。

    本系列到目前為止所介紹的基于Java的命令行解析庫傾向于使用批注或特定的編程API,以允許在Java代碼中定義,解析和詢問命令行參數。 顧名思義,CLAJR使用Java反射來定義要解析的預期參數。

    CLAJR主頁上描述了為什么作者選擇對方法名稱進行反思以定義命令行參數。 CLAJR尋找被命名為與要處理的一個或多個參數相對應的方法。 單下劃線在單連字符命令行參數的方法名稱之前,而雙下劃線在雙連字符命令行參數的方法名稱之前。 當多個命令行參數執行相同的操作時,可以將單個方法命名為與多個命令行參數對齊。

    與本系列的其他文章一樣,我在本文中的示例演示了如何使用CLAJR庫對--file / -f命令行參數和--verbose / -v命令行參數進行建模。 要在CLAJR中“定義”這些參數,我需要將方法_f__file和_v__verbose為對應于-f / --file和-v / --verbose參數。 下一個代碼清單中的嵌套類Options的部分代碼片段對此進行了演示。

    CLAJR中的“定義”階段:反思

    /*** Used reflectively by CLAJR to parse and interrogate command line* options defined as fields in this class.*/ public static class Options {private String file;private boolean verbose;public void _v__verbose(){verbose = true;}public void _f__file(String newFilePathAndName){file = newFilePathAndName;}

    使用CLAJR進行解析僅需一個語句。 接下來的兩行代碼演示了如何調用靜態CLAJR.parse(String[], Object...)并將上面部分顯示的命令行參數和Options類的實例化實例傳遞給它。

    CLAJR中的“解析”階段

    final Options options = new Options(); CLAJR.parse(arguments, options);

    在上面顯示的單行分析中, parse方法沒有返回值。 相反,傳入的“選項”實例的字段根據在命令行上提供的參數填充。 CLAJR在“選項”實例的方法上使用反射,以找到在命令行上發現相應參數時要調用的方法。 正是Options這種實例,人們可以“詢問”以在命令行上找到參數的值。 下一個代碼清單中對此進行了演示。

    CLAJR的“審訊”階段

    out.println("File is '" + options.getFile() + "' and verbosity is set to '"+ options.isVerbose() + "'.");

    CLAJR支持通過反思按方法提供幫助/使用信息。 在這種情況下,方法的命名方式與命令行參數本身的約定類似,但是方法名稱之前帶有help 。 下一個代碼清單中前面顯示的參數的兩種組合對此進行了演示。

    CLAJR“幫助”方法

    public String help_v__verbose() {return "Enables verbosity of output."; }public String help_f__file() {return "Path and name of file."; }

    剛剛顯示的代碼清單中的方法為-v / --verbose和-f / --file參數提供“幫助”字符串。 靜態CLAJR方法CLAJR.getHelp()方法提供一個String表示基于這些方法的命令行用法。 CLAJR提供了可以捕獲的不同異常,這些異常通常與“幫助”方法結合使用。 在下一個代碼清單中演示了這些內容,該清單顯示了可以執行的與不同錯誤情況相關的多個捕獲,以及其他保證顯示錯誤信息的情況。

    CLAJR的CLAJR.getHelp()和CLAJR異常

    catch (CLAJR.EmptyArgumentListException emptyArgsEx) {out.println("Usage: Main -f|--file [-v|--verbose]"); } catch (CLAJR.HelpNeededException helpNeededEx) {out.println(CLAJR.getHelp()); } catch (CLAJR.ParseException parseEx) {out.println(parseEx.getMessage());out.println(CLAJR.getHelp()); } catch (Throwable throwable) // CLAJR.parse throws Throwable {out.println(throwable.getMessage()); }

    CLAJR 0.9的CLAJR.parse(String[], Object...)方法拋出Throwable ,因此上面的代碼捕獲了Throwable 。

    接下來的三個屏幕快照展示了這個簡單的示例。 第一張圖片顯示了沒有提供參數時打印的用法。 第二張圖描繪了定義,解析和詢問命令行參數的正常流程。 第三個圖像演示了在命令行上提供意外的參數時顯示的幫助信息。

    為了使示例CLAJR.java ,我必須更改CLAJR.java源文件。 具體來說,我將invoke(String, String, boolean, List)方法中的491行從if (tails == null)更改為if (tails == null || tails.isEmpty()) 。 這是開源的優勢之一; 可以根據需要調整或修復代碼。

    CLAJR允許以反射方式訪問以單個下劃線命名的方法。 此-方法對應于一個或多個“ tail”參數。 在本示例中,我沒有使用它,但是有趣的是,這在JDK 9中不起作用,因為在JDK 9中不允許使用單個下劃線作為標識符。實際上,JDK 8的javac現在對此進行警告,如圖所示。下一個屏幕快照。

    在選擇框架或庫來幫助Java進行命令行分析時,需要考慮CLAJR的一些其他特征。

    • CLAJR是開源的,并獲得了GNU通用通用公共許可證 ( 2.1或更高版本)的許可 。
    • CLAJR是供下載作為包含單個文件CLAJR-0.9.java稱為CLAJR-0.9-src.zip大約11 KB的zip文件。
    • CLAJR 0.9不需要下載任何第三方庫。
    • CLAJR已經存在了一段時間,但似乎已經有好幾年沒有更新了。 我必須對源代碼進行一些小的更改,以使其對我來說正常工作。

    CLAJR是基于Java的命令行處理庫,其主要用途是通過使用反射與本系列中介紹的其他庫區分開。 反射用于定義預期的命令行參數以及與這些參數關聯的幫助消息。 CLAJR提供了一些與Java命令行處理相關的獨特思想和方法,但這是一個過時的庫。

    其他資源

    • CLAJR主頁
    • CLAJR在SourceForge上下載

    翻譯自: https://www.javacodegeeks.com/2017/08/java-command-line-interfaces-part-12-clajr.html

    java登錄界面命令

    總結

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

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