java - 如何读取部署在Tomcat中的未分解war文件中的资源文件?

标签 java web-applications tomcat maven-2 resources

我正在尝试加载一个二进制图像文件以在我的服务器端 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/

相关文章:

spring - JNDI 数据源 : migrating from Tomcat to jBoss/Wildfly

java - Tomcat java.lang.OutOfMemoryError : GC overhead limit exceeded 错误

java - 奥利奥和馅饼通知

php - 关于为每个客户存储照片以便他们可以访问的解决方案的建议

java - 通过不同的 Y 截距和 X 值绘制多条回归线

google-apps-script - 如何检查 Google App Script 中的函数是否已被其他用户执行?

java - Webapp文件组织约定(开发结构)

tomcat - 如何在 META-INF/context.xml 中为 Tomcat 指定路径

关于类加载器的java类标识

java - 带有附加到 Design Element 的 jar 的 Domino Java 代理会导致 OutOfMemory 错误