我有一个名为app.properties的属性文件,它正确放在src / main / resources / app.properties中。
在WAR文件中,它正确位于\ WEB-INF \ classes。
在我的本地环境(Windows)中的独立模式和Linux测试服务器上的独立模式下,WAR文件启动时正确读取我的属性文件。
在另一台Linux服务器上的Jboss Domain模式下,使用完全相同的WAR文件,我得到错误文件找不到app.properties。确实存在。
除了域模式是两个服务器之间的差异之外,第一个测试服务器jboss安装在root下并以root身份运行。另一台服务器作为具有读取和执行访问权限的用户运行。
我已经用print语句彻底调试了代码并且我99%确定它不是代码问题,任何想法在jboss域模式下可能导致无法读取属性文件的问题类路径?
提前致谢。
代码的相关部分
MutablePropertySources sources = new MutablePropertySources();
sources.addLast(getEncryptablePropertiesSource(new ClassPathResource("app.properties")));
部分方法
private EncryptablePropertiesPropertySource getEncryptablePropertiesSource(Resource propsResource) throws IOException{
//don't use file system resource because property files may be in a jar
System.out.println(">>>> in getEncryptablePropertiesSource filename is :");
System.out.println(propsResource.getFilename());
System.out.print(">>>> URL is: ");
System.out.println(propsResource.getURL());
最后一次System out print语句在第二个测试环境中抛出错误,不会在任何其他环境中引起问题。
答案 0 :(得分:0)
如果您的ClassPathResource是来自Spring的课程:
公共类ClassPathResource扩展了AbstractFileResolvingResource
类路径资源的资源实现。使用给定的 ClassLoader或用于加载资源的给定类。
如果类路径资源所在,则支持解析为java.io.File 在文件系统中,但不适用于JAR中的资源。始终支持 分辨率为URL。
因此,我认为你不能在你的情况下使用它。 您是否尝试过使用以下方法之一?