如何从ear/war/jar读取文件



我的耳朵包含另一场战争。项目结构如下所示:

project.ear
 |-- lib
 |-- META-INF
 |-- project-web.war
 |    |-- META-INF
 |    |-- WEB-INF
 |    |    |-- classes
 |    |    |    `-- com
 |    |    |         `-- example
 |    |    |              `-- services
 |    |    |                   `-- ListPageService.class
 |    |    |-- lib
 |    |    |-- web.xml
 |    |    `-- weblogic.xml
 |    `-- content.html
 `-- project-services.jar

在战争中,有一个JAX-RS类ListPageService,需要读取content.html文件。我如何访问该文件?

在战争文件中获取资源的通常方法是通过ServletContext.getResourcegetResourceAsStream。您应该能够通过宣布用javax.ws.rs.core.Context

注释的字段来访问JAX-RS类中的ServletContext
@Context ServletContext servletContext;

然后在请求处理方法中,您可以说

URL content = servletContext.getResource("/content.html");
// alternatively
// InputStream content = servletContext.getResourceAsStream("/content.html");

编辑:此答案现在不再适用于现在提出的问题。建议的方法只能从classpath获取资源。

请看一下Class.getResourceAsStream方法。它允许您访问类路径中的文件。

最新更新