Java库Args4j和Scala 2.10

时间:2016-07-27 21:49:30

标签: java scala args4j

我想在我的Scala v2.10应用程序中使用args4j Java库。但是,我遇到了一些麻烦。举个例子,我有一个用Java存储我的参数的类,如下所示。

public class MyArgs {
 @Option(name = "-i", usage = "file input", required = true)
 private String input;

 public String getInput() { return input; }
}

然后我有一个像以下一样的Scala程序。

object TestArgs {
 def main(args: Array[String]): Unit = {
  val myArgs = new MyArgs()
  val cmdLineParser = new CmdLineParser()
  try {
   cmdLineParser.parseArgument(java.util.Arrays.asList(args: _*))
  } catch {
   case e: Exception => {
    System.err.println(e.getMessage)
   }
  }
 }
}

在IntelliJ中,我传递了类似-i some/path/to/file.txt的内容,但我不断收到以下消息。

  

" -i"不是有效选项

关于发生了什么的任何想法?

1 个答案:

答案 0 :(得分:1)

您可以直接使用args4j Java库;但是,我可以建议这个包装库。

Scala helper using args4j

这个实现适用于我使用Scala 2.10,Spark 1.6

// import the Java args4j
import org.kohsuke.args4j.Option
// import the scala wrapper
import OptionsHelper.optionsOrExit
object SparkScalaTest {
    def main(args: scala.Array[String]) {
        // setupt the options
        class MyOptions extends OptionsWithHelp {
            @Option(name="--foo", aliases=Array("-f"), usage="foo bar", required=false)
            var update: Boolean = false // this is the default value, since it is not required
         }
        //Parse arguments
         val options = optionsOrExit(args, new MyOptions)

         sc.stop
     }
}