scala-加载打包在jar中的属性文件时出错
这是一个新手问题,我读了很多书,但我有点困惑 我从一个Jar中传递一个属性文件,读取配置,一切正常 我想添加一个try-catch。我尝试了这个方法,但没有效果,因为如果属性文件不存在,加载不会产生异常。因此,有三个问题:scala-加载打包在jar中的属性文件时出错,scala,configuration,typesafe,typesafe-config,Scala,Configuration,Typesafe,Typesafe Config,这是一个新手问题,我读了很多书,但我有点困惑 我从一个Jar中传递一个属性文件,读取配置,一切正常 我想添加一个try-catch。我尝试了这个方法,但没有效果,因为如果属性文件不存在,加载不会产生异常。因此,有三个问题: 这样加载文件正确吗 既然配置在jar中,那么设置try/catch有意义吗 若有,有何建议 var appProps : Config = ConfigFactory.load() try { appProps = ConfigFactory.load("applic
- 这样加载文件正确吗
- 既然配置在jar中,那么设置try/catch有意义吗
- 若有,有何建议
var appProps : Config = ConfigFactory.load() try { appProps = ConfigFactory.load("application.properties") } catch { case e: Exception => { log.error("application.properties file not found") sc.stop() System.exit(1) } }
ConfigFactory.load(“resource.config”)
将像处理空资源一样处理丢失的资源。因此,您会得到一个空的配置
。因此,try-catch块并没有真正意义
您通常会指定如下的回退配置:
val appProps = ConfigFactory.load(
"application.properties"
).withFallBack(
ConfigFactory.load()
)
编辑:
判决
因此,您会得到一个空的Config
这有点不完整<代码>ConfigFactory.load(resourceBaseName:String)应用defaultReference()和defaultOverrides()。因此,生成的Config
对象可能包含一些通用环境数据,并且不是空的
据我所知,检查资源是否存在并发出错误消息(如果不存在)的最佳选择是自己查找资源:
val configFile = "application.properties"
val config = Option(getClass.getClassLoader.getResource(configFile)).fold {
println(s"Config not found!")
ConfigFactory.load()
} { resource =>
ConfigFactory.load(configFile)
}
谢谢你的回答。只是一个问题:如果找不到application.properties,则会加载一个空配置,是否正确?如果是这样的话,我如何测试并记录它?因为我尝试了if(appProps.isEmpty),但是没有work@Irene我更新了我的答案。注意:不需要以“/”开头资源文件,所以我从答案中删除了它。