我有一个 Tomcat 7(.0.42) 实例,其中有 lib/hosts 目录(更具体地说在 ${catalina.base} 中),具有多个特定于主机的属性(比如 qa1.properties、qa2.属性等)。
当尝试加载属性文件时,它使用:
applicationContext.getResource("classpath:hosts/qa1.properties").exists()
它失败了,因为 exists() 返回 false。该文件显然位于 hosts 子目录中。如果文件被复制/移动到 lib 目录,它可以通过调用类似的代码正常工作:
applicationContext.getResource("classpath:qa1.properties").exists()
这里使用了Spring的实现类ClassPathResource,它调用
return this.classLoader.getResource("hosts/qa1.properties");
类加载器实例是org.apache.catalina.loader.WebappClassLoader
根据Spring规范,location可以指定子目录(如classpath:/path/to/file)。为什么它在这里不起作用?
最佳答案
结果是 hosts 子目录缺少 +x 权限。
关于java - ${catalina.base}/lib 子目录下的属性文件解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35162436/