由于文件路径中的附加斜杠,未找到 Spring 占位符 (.properties)
Posted
技术标签:
【中文标题】由于文件路径中的附加斜杠,未找到 Spring 占位符 (.properties)【英文标题】:Spring placeholder (.properties) not found because of an additional slash in the file path 【发布时间】:2018-07-15 15:58:13 【问题描述】:我想将我的应用程序属性文件放在 Tomcat 的 conf 目录中,因此我写了
<context:property-placeholder location="$catalina.base/conf/app.properties"/>
我收到FileNotFoundException: Could not open ServletContext resource
。 app.properties 文件在那里。问题是在 Spring 正在寻找文件的路径的开头有一个额外的斜线。好像是/D:/...../conf/app.properties
解决方案: 编写......location="文件:$catalin..... 工作。
【问题讨论】:
只做$classpath/app.properties
,应该没问题:)
可以,但我不希望文件位于项目目录中。
你确定 Catalina base 是正确的属性吗?
你看过@PropertySource("file://your-file")
??文档在这里docs.spring.io/spring-boot/docs/current/reference/html/…
@IndraneelBende 你是什么意思?
【参考方案1】:
您需要指定为文件,因为您试图从外部文件中读取:
<context:property-placeholder location="file:$catalina.base/conf/app.properties"/>
应该是这样的: How to read values from properties file?
【讨论】:
“需要确保 catalina.base 设置正确,以便上下文能够读取文件”是什么意思。我确信 cataline base 显示到正确的目录,因为异常堆栈跟踪中的路径看起来像/D:/XX/MY_PROJ_NAME/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/conf/app.properties
。当我从 Eclipse 的控制台复制此路径并删除第一个斜杠时,当我在 Windows 文件资源管理器中键入该文件时,该文件将在记事本中打开。当我将 file:// 添加到 /D:/XX/XX/tmp0/conf/app.properties
并尝试通过文件资源管理器访问它时,也会发生同样的情况。
“同样的情况”是指文件被记事本打开,而不是应用程序打开。
嗯...显然,第二个看起来是正确的!我也在做同样的事情,即读取占位符的属性并填充占位符!!
@user435421 听起来很酷!!请您接受答案并点赞
如果您在答案中添加file:
可能是除file://
之外的解决方案,那么我会这样做。对于可能会错过我在问题中更新的解决方案部分的读者...以上是关于由于文件路径中的附加斜杠,未找到 Spring 占位符 (.properties)的主要内容,如果未能解决你的问题,请参考以下文章
由于 NDK 路径中的反斜杠,Qt Creator 无法构建 Android 库