2009-08-27 25 views
2

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

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

不是web应用程序路径,而是glassfish配置路径!如果我想获取存储在“classes”路径中的属性文件,我该怎么办?通常情况下,默认路径是项目路径,你知道。我使用了ClassLoader.getResourceAsStream("sss")。但它返回null!我确定文件名是正确的,因为我已经在另一个简单的Java应用程序中尝试过了。

更新:使用而不是

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

ClassLoader.getSystemResource("sectionMapping.properties") 

的伎俩!我想知道为什么?

+0

我更新了我的答案。 – 2009-08-27 22:53:50

回答

5

您应该使用getResourceAsStream或类似的。有关如何访问资源,请参见this post。 (这与Glassfish无关 - 适用于所有Java EE应用服务器。)

另请参阅this JavaWorld article

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

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

或(注意,如果使用方法java.lang.Class斜线)

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

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

如果这两项都不起作用,请将getResourceAsStream调用替换为getResource(...).openStream(),并发布应抛出异常的详细信息。