我正在使用一个类来在源文件夹下获取属性文件。但这不起作用!经过检查,我发现通过使用默认路径
File f = new File("/src/ss.properties");
不是Web应用程序路径,而是glassfish配置路径!如果要获取存储在“类”路径中的属性文件,该怎么办?您知道,通常默认路径是项目路径。
我用过ClassLoader.getResourceAsStream("sss")。但是它返回null!我确定文件名正确,因为我已经在另一个简单的Java应用程序中尝试过了。
ClassLoader.getResourceAsStream("sss")
更新 :使用
this.getClass().getClassLoader().getResourceAsStream("sectionMapping.properties");
代替
ClassLoader.getSystemResource("sectionMapping.properties")
做到了!我想知道为什么?
您应该使用getResourceAsStream或类似的名称。有关如何访问资源的信息,请参见这篇文章。(这独立于Glassfish- 适用于所有Java EE应用服务器。)
getResourceAsStream
另请参阅此JavaWorld文章。
更新: 如果文件位于该位置src/ss.properties,请检查文件是否已复制到WEB- INF/classes。然后,您应该可以使用以下代码访问它:
src/ss.properties
WEB- INF/classes
InputStream propStream = ClassLoader.getResourceAsStream("ss.properties");
或(如果使用中的方法,请注意斜杠java.lang.Class)
java.lang.Class
InputStream propStream = Class.getResourceAsStream("/ss.properties");
请注意,需要使用完整的文件名(包括.properties扩展名)。
.properties
如果以上两种方法均无效,请用替换getResourceAsStream呼叫,getResource(...).openStream()并张贴应引发的异常的详细信息。
getResource(...).openStream()