问题描述
# App
tables = [
"table_1","talbe_2"
]
和以下scala代码:
import pureconfig._
import pureconfig.generic.auto._
import com.typesafe.config.ConfigFactory
import pureconfig.generic.ProductHint
case class Configuration(tables: Array[String])
object Config {
implicit def hint[A] = ProductHint[A](ConfigFieldMapping(CamelCase,CamelCase))
val conf = ConfigSource.fromConfig(ConfigFactory.load("application.conf")).load[Configuration] match {
case Right(conf) => conf
case Left(failures) => throw new Exception(s"Unable to load the configuration ${failures.toList.mkString("\n")}")
}
}
object Test extends App {
val res = Config.conf.tables
println("hello")
}
当我将application.conf放到资源文件夹中时,它可以工作。但这在我使用时不起作用
-Dconfig.file=C:/Users/path/to/application.conf
尽管使用了-Dconfig.file参数,它仍使用资源application.conf文件。 你有什么主意吗?
解决方法
问题出在电话上
ConfigFactory.load("application.conf")
来自scaladocs
从给定的类路径资源加载应用程序的配置 或类路径资源基本名称,将其夹在默认值之间 引用配置和默认替代,然后对其进行解析。
您必须使用
ConfigFactory.load()
其中
加载默认配置,等效于 加载(defaultApplication())
defaultApplication
支持config.file
如果系统属性为config.resource,config.file或config.url 设置,然后在那些指定的类路径资源,文件或URL 将使用属性而不是默认属性 应用程序。{conf,json,properties}类路径资源。