Play 2.0 / Scala:加载模块参考配置坏了吗?

时间:2013-02-05 16:31:34

标签: scala playframework-2.0 sbt

我已经开始将一些功能提取到一个单独的Play模块中,并将一些默认配置与我Typesafe's Config library所述的模块中的文件conf/reference.conf放在一起。这种配置很好,例如,通过功能测试在模块的上下文中运行。

但是一旦我尝试根据所述模块启动应用程序,我似乎遇到了一些类加载器问题,例如我从Akka子系统得到了一些奇怪的抱怨:

No configuration setting found for key 'akka.version'

一旦我从模块中删除文件reference.conf(没有其他更改),此异常就消失了,但显然应用程序将不再起作用。目前,模块配置位于文件conf/module-reference.conf中,我在主应用程序的配置中include。这有效,但我想摆脱include

我怀疑我的reference.conf以某种方式遮蔽了Akka提供的那个。有没有人遇到过这个问题?什么是解决这个问题的最佳方法?

1 个答案:

答案 0 :(得分:0)

看起来我是一些奇怪的文件系统不一致的受害者:

  • 我正在使用play publish-locally
  • 将模块部署到Play的本地存储库
  • 这个相同的存储库位于Eclipse的构建路径上(使用play eclipsify创建)
  • 有时,Play主应用程序似乎在某个方面以某种方式破坏了模块的JAR

解决方法:

  • 关闭Eclipse
  • 在本地部署模块
  • 运行主应用程序的干净构建

使用此过程,应用程序的配置正常。

提示

在研究这个问题时,我遇到了Typesafe的Config库的一个有用功能。您可以使用以下代码行获取整个配置树,包括每个条目的来源:

val configDump: String = current.configuration().underlying.root().render()

和将其转储到文件中以供进一步分析。