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

gio*_*ele 1 java tomcat java-ee

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

我有一个库,它将所需的所有文件放在它的jar中,以及编译的类.当库在独立应用程序中使用时,此代码可以工作,但在Tomcat中使用库时(使用PHP java-bridge)则不行.

final InputStream stream = Object.class.getResourceAsStream("/styles/foo.xsl");
Run Code Online (Sandbox Code Playgroud)

我尝试没有成功使用中的问题列出的解决方案的getResourceAsStream不加载在Web应用程序资源,改变了代码

final ClassLoader resourceLoader = Thread.currentThread().getContextClassLoader();
final InputStream stream = resourceLoader.getResourceAsStream("/styles/foo.xsl");
Run Code Online (Sandbox Code Playgroud)

当独立使用库或在Tomcat中使用库时,后一个代码既不起作用.在这两种情况下stream == null.

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

有人可以建议一段在Tomcat和非Tomcat应用程序中都能运行的代码吗?

Bal*_*usC 5

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

final ClassLoader resourceLoader = Thread.currentThread().getContextClassLoader();
final InputStream stream = resourceLoader.getResourceAsStream("styles/foo.xsl");
Run Code Online (Sandbox Code Playgroud)