[英]getResourceAsStream to get a file inside the war
我有一个maven项目,该项目生成一个war文件,其中包含我想读取的文件。
没有异常被抛出...
编辑注意,这不在servlet中 :
@Path("")
@Stateless
public class MessageRestService {
//String liquibaseTenantDefinitionFile = "/WEB-INF/liquibase/db.tenant.xml";
//String liquibaseTenantDefinitionFile = "/WEB-INF/classes/liquibase/db.tenant.xml";
//String liquibaseTenantDefinitionFile = "WEB-INF/classes/liquibase/db.tenant.xml";
//String liquibaseTenantDefinitionFile = "/liquibase/db.tenant.xml";
String liquibaseTenantDefinitionFile = "liquibase/db.tenant.xml";
public InputStream getTenantFile(){
try {
return getClass().getClassLoader()
.getResourceAsStream(liquibaseTenantDefinitionFile);
} catch(Exception e){
System.err.println(e);
System.err.println(e.getMessage());
e.printStackTrace();
}
return null;
}
该文件确实存在于war文件中:
jar -tf target/grest-0.0.1-SNAPSHOT.war | grep db.tenant.xml
WEB-INF/classes/liquibase/db.tenant.xml
该方法始终返回null,我尝试了各种排列:
我不知道该怎么做。 我正在使用wildfly,并使用Arquillian jboss容器进行测试。
我究竟做错了什么?
war文件的根目录不在webapp类加载器中。 WEB-INF/classes
目录位于您的webapp类加载器中。 您应该将资源移到那里,然后只使用植根于WEB-INF / classs的路径。
指出不同:
"/WEB-INF/liquibase/db.tenant.xml";
和
/WEB-INF/classes/liquibase/db.tenant.xml
但实际上他们都是错的。 它应该是:
/liquibase/db.tenant.xml
因为CLASSPATH从/ WEB-INF / classes开始。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.