[英]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.