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

时间:2012-01-06 18:53:03

标签: java web-applications tomcat maven-2 resources

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

Image img = Image.getInstance(this.getClass().getResource("logo.png"));

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

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

Image img = Image.getInstance(this.getClass().getResource("/../../logo.png"));

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

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

谢谢!

2 个答案:

答案 0 :(得分:6)

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

将资源放入src/main/resources目录。然后使用以下命令访问它们:

this.getClass().getResource("/logo.png"); 

或:

Thread.currentThread().getContextClassLoader().getResource("logo.png"); 

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

答案 1 :(得分:1)

您可以将图像放在类路径的根部并尝试:

Thread.currentThread().getContextClassLoader()
               .getResource("logo.png");