2016-07-27 2 views
0

Ich möchte die Java-Bibliothek args4j in meiner Scala v2.10 Anwendung verwenden. Ich laufe jedoch in Schwierigkeiten. Als Beispiel habe ich eine Klasse, um meine Argumente in Java wie folgt zu speichern.Interoperation zwischen Java-Bibliothek Args4j und Scala 2.10

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

public String getInput() { return input; } 
} 

Ich habe dann ein Scala-Programm wie folgt.

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

In IntelliJ, gehe ich in so etwas wie -i some/path/to/file.txt, aber ich halte die folgende Meldung erhalten.

"i" ist keine gültige Option

Irgendwelche Ideen auf, was los ist?

Antwort

1

Sie können die args4j Java-Bibliothek direkt verwenden; Ich könnte jedoch diese Wrapper-Bibliothek vorschlagen.

Scala helper using args4j

Diese Implementierung für mich Funken mit Scala 2.10 arbeitet, 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 
    } 
} 
Verwandte Themen