我正在尝试加载一个二进制图像文件以在我的服务器端 Java 代码中进行一些处理。我目前将我的图像放在我的执行类所在的包中并调用:
Image img = Image.getInstance(this.getClass().getResource("logo.png"));
当我在 exploded war 设置中的开发箱上运行 Tomcat 时,这工作正常,但是当我部署到运行 Tomcat 的服务器时,它不会分解 war 文件,对 getResource 的调用返回 null。
我也试过将图像移动到我的上下文根并像这样访问它:
Image img = Image.getInstance(this.getClass().getResource("/../../logo.png"));
同样,这适用于我的开发箱,但当我将它部署到其他地方时就不行了。
有没有更好的方法来访问这个文件?我做错了什么?
谢谢!!
最佳答案
如果您使用 Maven 进行构建,您需要确保图像确实已放入存档中。
将资源放在您的src/main/resources
目录中。然后访问它们:
this.getClass().getResource("/logo.png");
或者:
Thread.currentThread().getContextClassLoader().getResource("logo.png");
(上面评论中的代码示例,但放在答案中以便更明显)
关于java - 如何读取部署在Tomcat中的未分解war文件中的资源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8762901/