Java 使用GlassFish的WebApplication中的文件路径

Java 使用GlassFish的WebApplication中的文件路径,java,glassfish,Java,Glassfish,我正在使用一个类来获取源文件夹下的属性文件。但它不起作用!检查后,我发现默认路径是使用 File f = new File("/src/ss.properties"); 不是web应用程序路径,而是glassfish配置路径!如果我想获取存储在“classes”路径中的属性文件,我该怎么办?通常默认路径是项目路径,您知道 我使用了ClassLoader.getResourceAsStream(“sss”),但它返回null!我确信文件名是正确的,因为我在另一个简单的Java应用程序中尝试过它

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

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")

我成功了!我想知道为什么?

您应该使用
getResourceAsStream
或类似的工具。有关如何访问资源的信息,请参阅。(这独立于Glassfish—它适用于所有Java EE应用程序服务器。)

另见

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

InputStream propStream = ClassLoader.getResourceAsStream("ss.properties");
或者(如果使用
java.lang.Class
中的方法,请注意前导斜杠)

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

如果这两种方法都不起作用,请将
getResourceAsStream
调用替换为
getResource(…).openStream()
,并发布应引发的异常的详细信息

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