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

kee*_*ser 2 java war classloader

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

EAR
-WAR
--input.txt
--META-INF
--WEB-INF
---classes
(and so on)
Run Code Online (Sandbox Code Playgroud)

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

this.getClass().getClassLoader().getResourceAsStream("../../input.txt");
Run Code Online (Sandbox Code Playgroud)

Thread.currentThread().getContextClassLoader().getResourceAsStream("../../input.txt");
Run Code Online (Sandbox Code Playgroud)

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

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

Kay*_*man 5

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

  • 将它保留在类路径上要比在路径上创建奇怪的黑客以便访问文件要简洁得多. (2认同)