我正在尝试加载二进制映像文件,以便在我的服务器端Java代码中进行一些处理。我目前正将我的图像放在我执行类存在的包中并调用:
Image img = Image.getInstance(this.getClass().getResource("logo.png"));
当我在爆炸式战争设置中在我的开发箱上运行Tomcat时,这很好用,但当我部署到运行Tomcat的服务器时,它不会爆炸war文件,对getResource的调用将返回null。
我也尝试将图像移动到我的上下文根并像这样访问它:
Image img = Image.getInstance(this.getClass().getResource("/../../logo.png"));
同样,这适用于我的开发框,但不是在我将其部署到其他地方时。
有没有更好的方法来访问此文件?我做错了什么?
谢谢!
答案 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");