java - 使用 getResourceAsStream 在 Tomcat 中加载 JAR 中的文件

标签 java jakarta-ee tomcat

有没有办法从 Tomcat 应用程序使用 getResourceAsStream 加载存储在 JAR 中的文件?

我有一个库,它把它需要的所有文件连同编译的类一起放在它的 jar 中。当在独立应用程序中使用库时,此代码有效,但在 Tomcat(使用 PHP java-bridge)中使用库时无效。

final InputStream stream = Object.class.getResourceAsStream("/styles/foo.xsl");

我尝试但没有成功使用问题 getResourceAsStream not loading resource in webapp 中概述的解决方案并将代码更改为

final ClassLoader resourceLoader = Thread.currentThread().getContextClassLoader();
final InputStream stream = resourceLoader.getResourceAsStream("/styles/foo.xsl");

无论是独立使用库还是在 Tomcat 中使用库时,后面的代码都不起作用。在这两种情况下 stream == null

我尝试加载的文件已正确存储在 /styles/foo.xsl 中的 JAR 中。包含所有类和这些其他文件的 JAR 是 tomcat/webapps/iJavaBridge/WEB-INF/lib/

有人可以推荐一段既适用于 Tomcat 应用程序又适用于非 Tomcat 应用程序的代码吗?

最佳答案

您需要从路径中删除前导斜杠。这仅适用于不在类路径根目录上运行的类加载器。

final ClassLoader resourceLoader = Thread.currentThread().getContextClassLoader();
final InputStream stream = resourceLoader.getResourceAsStream("styles/foo.xsl");

关于java - 使用 getResourceAsStream 在 Tomcat 中加载 JAR 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7785973/

相关文章:

java - 如何在现有的pdf上绘制几何图形?

java - EJB 事务回滚异常

jakarta-ee - JAX-RS/实体最佳实践

database - spring hibernate 获取整个数据库的锁

java - 创建一个二维数组并找到最大值

java - 使用 Digester 解析 XML

java - 如何让Luke支持lucene 4.1

java - Tomcat 7 + Jersey 2.0 错误

tomcat - 了解非数学背景的 apache solr 评分

java - 如果java中的链接是404,如何不显示按钮?