在其他类中无法访问包对象中定义的Val

时间:2016-08-21 12:13:50

标签: scala

我有以下包装对象,其中声明了val

package au.com.someproject.protocol

package object helpers {
  val etcdRoot = "someproject.com.au"
}

当我将API导入另一个项目并尝试访问我遇到的变量并出现以下错误时,此包对象被声明为API的一部分

[error] /home/user/git/company/project/project-agent/src/main/scala/au/com/someproject/project_agent/cluster/StatusMonitor.scala:52: not found: value etcdRoot
[error]       etcdClient.setKey(s"$etcdRoot/kumo/peers/${systemCluster.selfAddress.host.get}", systemCluster.selfAddress.port.get.toString, new Some(40.seconds))

我是这样导入变量的,除了应该完成之外我该怎么做

import au.com.someproject.protocol.helpers._

但是我得到了错误,是否有我在做声明或导入时出错?

1 个答案:

答案 0 :(得分:2)

通常是包对象的捕获,它们必须手动放在包文件夹中,这意味着我希望你的目录结构在导入工作之前看起来像这样。

src/main/scala/au/com/someproject/protocol/helpers/helpers.scala

helpers/内,您可以定义package object。有时候你很想拥有它,如下所示:

src/main/scala/au/com/someproject/protocol/helpers.scala

上述内容并未实际定义package object包上的helpers,您需要遵循特定的目录结构并在定义{package之前手动定义package object在它里面。}