2017-11-15 1 views
2

In einer Spark-Shell oder Anwendung (in Scala/Maven-Build geschrieben) kann ich die Static-Builder-Methode aus dem Apache Commons CLI-Paket nicht verwenden. Ich habe bestätigt, dass ich das Glas in den Klassenpfad einschließe und Zugriff auf die Klasse Option zusammen mit anderen Klassen im Paket wie Options, DefaultParser usw. habe. Warum kann ich diese öffentliche statische Methode in Scala nicht verwenden?Apache Commons CLI Option.builder() in Scala kann nicht verwendet werden

import org.apache.commons.cli.Option 

val opt = Option.builder("foo").build() 

error: value builder is not a member of object org.apache.commons.cli.Option

Ich kann jedoch sehen die statischen Felder Option.UNINITIALIZED und Option.UNLIMITED_VALUES

mit commons-cli 1.3.1

Scala Version: 2.11.8

Spark-Version: 2.2.0

Befehl, um die Shell zu starten:spark-shell --jars .m2/repository/commons-cli/commons-cli/1.3.1/commons-cli-1.3.1.jar

+0

Ich bin neu zu scala, also wird dies eine dumme Frage sein, aber Scala hat Zugriff auf statische innere Klassen in Java oder? – Chadderall

Antwort

0

Problem Source

Lassen Sie mich Ihnen helfen, Ihr Problem Szenario zu klären.

Sie können Ihre .idea Ordner finden öffnen, dass es bereits einige interne jar Abhängigkeiten haben, und von der Liste commons_cli existiert, aber Version 1.2.

Dies würde zu Klassenkollision führen.

Die Lösung ist einfach, verweisen Sie die doc, verwenden Sie die kompatible Konstruktor-Methode.

+0

Danke für die Antwort, aber das ist nicht der Fall. Es gibt keine Kollision mit 1.2 und ich benutze tatsächlich 1.3 – Chadderall

Verwandte Themen