2016-07-27 10 views
0

args4j JavaライブラリをScala v2.10アプリケーションで使用したいと思います。しかし、私はいくつかの問題に遭遇しています。例として、私はJavaで引数を次のように格納するクラスを持っています。JavaライブラリArgs4jとScala 2.10との相互運用

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

public String getInput() { return input; } 
} 

次に、次のようなScalaプログラムがあります。 IntelliJので

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) 
    } 
    } 
} 
} 

、私は-i some/path/to/file.txtのようなものを渡したが、私は次のメッセージを取得しておきます。

"-i" は有効なオプション

何が起こっている上の任意のアイデアではないでしょうか?

答えて

1

args4j Javaライブラリを直接使用できます。しかし、私はこのラッパーライブラリを提案するかもしれません。

Scala helper using args4j

この実装では、Scalaの2.10を使用して私の作品、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 
    } 
} 
スパーク