WebApplication中使用GlassFish的文件路径

Sef*_*ler 2 java glassfish

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

File f = new File("/src/ss.properties");
Run Code Online (Sandbox Code Playgroud)

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

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

更新:使用

this.getClass().getClassLoader().getResourceAsStream("sectionMapping.properties");
Run Code Online (Sandbox Code Playgroud)

代替

ClassLoader.getSystemResource("sectionMapping.properties")
Run Code Online (Sandbox Code Playgroud)

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

Vin*_*jip 5

你应该使用getResourceAsStream,或类似的.有关如何访问资源,请参阅此帖子.(这与Glassfish无关 - 它适用于所有Java EE应用服务器.)

另请参阅此JavaWorld文章.

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

InputStream propStream = ClassLoader.getResourceAsStream("ss.properties");
Run Code Online (Sandbox Code Playgroud)

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

InputStream propStream = Class.getResourceAsStream("/ss.properties");
Run Code Online (Sandbox Code Playgroud)

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

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