可以通過以下方式傳遞類的參數嗎?在命令行中爲該類中的主方法傳遞參數的正確方法java
java cs123.Learn -mode train -algorithm even_odd -model_file speech.even_odd.model -data speech.train -task classification
這裏,cs123是不同java文件及其編譯版本所在的包。使用以下命令
javac -cp commons-cli-1.2.jar cs123\*.java
爲了把事情說清楚我已編譯了.java
文件時,的.java的結構和.jar文件
lib
|--cs362
| |--all the java files including Learn.java
|--commons-cli-1.2.jar
我從lib
運行命令提示符夾。我擔心的是,從java文檔和其他來源,傳遞參數的格式只是一串字符串,對於選項,它也可以從java文檔中看到。使用上面的運行時間java
執行,我得到的
java.lang.ClassNotFoundException: org.apache.commons.cli.OptionBuilder
,但如果我執行,
java -cp commons-cli-1.2.jar cs123.Learn -mode train -algorithm even_odd -model_file speech.even_odd.model -data speech.train -task classification
我收到以下錯誤
Unrecognized option: -mode
Error: Could not create the Java Virtual Machine
Error: A fatal exception has occured. Program will exit.
我明白java的嘗試任何關聯與其關聯的-
作爲預定義的選項,-mode
不是它所識別的那個。但在同一時間.jar
文件是在那裏做它的工作。出於研究目的,commons-cli-1.2.jar
文件與幾種方法相關聯,其中兩個是commons/cli/Option
和commons/cli/OptionBuilder
。
我不得不這樣做,因爲指令是運行使用
java cs123.Learn -mode train -algorithm even_odd -model_file speech.even_odd.model -data speech.train -task classification
commons-cli-1.2.jar文件正在用於此目的。它具有稱爲Option和OptionBuilder的類,以便能夠以給定格式解析命令行。事實上,以這種方式傳遞論據對我來說也是新的。由於主類已經實施,我必須以這種方式運行程序。我只需要包含一些代碼來實現機器學習算法。我沒有編寫解析命令行的代碼。它已經在那裏。 –
我添加了一篇關於commons-cli – Maaaatt
的文章,可以告訴我,我的執行java命令的方法是否正確?我說的是 java -cp commons-cli-1.2.jar cs123.Learn -mode train -algorithm even_odd -model_file speech.even_odd.model -data speech.train -task classification 在這種情況下,可能還有其他一些我需要了解的依賴關係。 –