WebApplication中使用GlassFish的文件路径

我正在使用类来获取源文件夹下的属性文件。 但它不起作用! 检查后,我发现使用默认路径

File f = new File("/src/ss.properties"); 

不是Web应用程序路径,而是glassfish配置路径! 如果我想获取存储在“类”路径中的属性文件,我该怎么办? 通常,默认路径是项目路径,您知道。

我使用了ClassLoader.getResourceAsStream("sss") 。但是它返回null! 我确定文件名是正确的,因为我在另一个简单的Java应用程序中尝试过它。

更新 :使用

 this.getClass().getClassLoader().getResourceAsStream("sectionMapping.properties"); 

代替

 ClassLoader.getSystemResource("sectionMapping.properties") 

做了伎俩! 我想知道为什么?

您应该使用getResourceAsStream或类似的东西。 有关如何访问资源的信息 ,请参阅此post (这与Glassfish无关 – 它适用于所有Java EE应用服务器。)

另请参阅此JavaWorld文章 。

更新:如果您的文件位于src/ss.properties位置,请检查它是否已复制到WEB-INF/classes 。 然后,您应该能够使用以下代码访问它:

 InputStream propStream = ClassLoader.getResourceAsStream("ss.properties"); 

或(如果使用java.lang.Class的方法,请注意前导斜杠)

 InputStream propStream = Class.getResourceAsStream("/ss.properties"); 

请注意,需要使用完整的文件名(包括.properties扩展名)。

如果这些都不起作用,请用getResource(...).openStream()替换getResourceAsStream调用,并发布应该抛出的exception的详细信息。