如何解决Scala包名称冲突?

时间:2018-04-19 21:23:58

标签: scala packages

package net.kolotyluk

package object leaderboard {
  def randomLong: Long = {
    val random = scala.util.Random
    random.setSeed(System.nanoTime)
    random.nextLong
  }
}

无法使用

进行编译
[error] D:\Users\erick\repos\leaderboard\src\main\scala\net\kolotyluk\leaderboard\package.scala:7:24: object util is not a member of package net.kolotyluk.scala
[error]     val random = scala.util.Random
[error]                        ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed

我怀疑问题是我在其他地方定义了包net.kolotyluk.scala.extras。为什么Scala找不到scala.util.Random?这似乎是Scala编译器或Scala语言本身的缺陷。

有没有办法导入/指定绝对包名,而不是这里似乎使用的相对包名?

使用import __root__.scala.util.Random似乎无法像https://docs.scala-lang.org/tour/packages-and-imports.html中提到的那样工作,因为

[error] D:\Users\erick\repos\leaderboard\src\main\scala\net\kolotyluk\leaderboard\package.scala:3:8: not found: object __root__
[error] import __root__.scala.util.Random
[error]        ^

1 个答案:

答案 0 :(得分:3)

卫生署! https://docs.scala-lang.org/tour/packages-and-imports.html的文档是错误的。它应该是_root_而不是__root__