如何在Tomcat中部署的未爆炸war文件中读取资源文件?

111*_*01b 5 java resources tomcat maven-2 web-applications

我正在尝试加载二进制映像文件以在我的服务器端Java代码中进行一些处理.我目前将我的图像放在我执行类存在的包中并调用:

Image img = Image.getInstance(this.getClass().getResource("logo.png"));
Run Code Online (Sandbox Code Playgroud)

当我在爆炸战争设置中在我的开发盒上运行Tomcat时,这很好用,但当我部署到运行Tomcat的服务器时,它不会爆炸war文件,对getResource的调用返回null.

我也尝试将图像移动到我的上下文根并像这样访问它:

Image img = Image.getInstance(this.getClass().getResource("/../../logo.png"));
Run Code Online (Sandbox Code Playgroud)

同样,这适用于我的开发盒,但不是在我将其部署到其他地方时.

有没有更好的方法来访问此文件?我究竟做错了什么?

谢谢!!

che*_*tts 6

如果您使用Maven构建,则需要确保将图像实际放入存档中.

将资源放在您的src/main/resources目录中.然后访问它们:

this.getClass().getResource("/logo.png"); 
Run Code Online (Sandbox Code Playgroud)

要么:

Thread.currentThread().getContextClassLoader().getResource("logo.png"); 
Run Code Online (Sandbox Code Playgroud)

(上面评论的代码示例,但是在答案中更加明显)