繁体   English   中英

在war文件中查找独立或在耳中部署的资源(.txt文件)

[英]Find a resource (.txt file) in war file which is deployed standalone or in ear

我有一个war文件打包在耳中并部署。 这是结构:

EAR
-WAR
--input.txt
--META-INF
--WEB-INF
---classes
(and so on)

我试图从WEB-INF / classes文件夹中的一个类(比如abc.xyz.Myclass)读取input.txt 这是我尝试过的:

this.getClass().getClassLoader().getResourceAsStream("../../input.txt");

Thread.currentThread().getContextClassLoader().getResourceAsStream("../../input.txt");

我通过附加调试器尝试了几个路径,如“../input.txt”或“/input.txt”或只是“input.txt”。 但每次我得到NULL作为返回值(意味着它无法找到该文件)。

在战争中访问该文件的正确方法是什么,无论战争是单独部署还是包装在耳中? 请帮忙。

使用getResource() ,资源需要位于类路径上。 因此,您需要将input.txt放在classes目录下的某处。

这是因为input.txt在类路径之外,其中一个通常是WEB-INF/classes/ ,并且您无法使用类加载器访问位于类路径外部的资源。

或者,如果代码可以访问HttpServletRequest对象:

    request.getServletContext().getResourceAsStream("/input.txt");

当然还有其他方法可以获取ServletContext实例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM