无法在Scala中使用Apache Commons CLI Option.builder()。

4
在Spark shell或使用Scala/maven构建的应用程序中,我无法使用Apache Commons CLI包中的静态构建器方法。我确认将该jar包包含在类路径中,并且可以访问Option类以及该包中的其他类(如Options、DefaultParser等)。为什么我不能在Scala中使用这个公共静态方法?
import org.apache.commons.cli.Option

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

错误: 对象org.apache.commons.cli.Option中不存在成员builder

但是我可以看到静态字段Option.UNINITIALIZEDOption.UNLIMITED_VALUES

使用commons-cli 1.3.1

Scala版本: 2.11.8

Spark版本: 2.2.0

启动shell的命令: spark-shell --jars .m2/repository/commons-cli/commons-cli/1.3.1/commons-cli-1.3.1.jar


我对Scala还很陌生,所以这可能是一个愚蠢的问题,但是Scala可以访问Java中的静态内部类,对吧? - Chadderall
1个回答

2

Problem Source

让我帮助您澄清问题场景。
您可以打开您的.idea文件夹,发现它已经有一些内部jar依赖关系,而且列表中存在commons_cli,但是版本为1.2。
这将导致类冲突。
解决方案很简单,参考doc,使用兼容的构造方法。

谢谢您的回答,但这不是情况。1.2没有冲突,我确实在使用1.3。 - Chadderall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接