[英]resource files under webapp/WEB-INF or src/main/resources?
[英]JavaEE web - accessing files from /src/main/resources
我有一个正在编写的Web应用程序,我需要访问两个文件(xlsx)。 我不确定我将使用哪个Web服务器(Tomcat,Glassfish或其他)。
在我的应用程序中,我有一个文件位于:
/src/main/resources/Analysis_Template.xlsx
我试图弄清楚如何从代码中访问它。
以下代码似乎在WildFly中“起作用”,但在GlassFish中不起作用
URI templateURI = this.getClass().getResource("/Analysis_template.xlsx").toURI();
File f = new File(templateURI.getPath());
尽管这段代码没有崩溃f.canRead()
返回false,所以我认为它可能无法正常工作。 当我尝试在GlassFish下运行此程序时,一切进展不顺利,并且在代码的第一行中直接使用java.lang.NullPointerException
崩溃了
我确信任何建议都非常明显,我只是想念它。
-编辑和注释-
[我确实得到了WAR存档]
使用WildFly ,文件为:
/usr/local/opt/wildfly-as/libexec/standalone/deployments/fleetForecast-1.0-SNAPSHOT.war/WEB-INF/classes/ANALYSIS_template.xlsx
Glassfish的从我可以告诉NetBeans的报告: 在就地部署在
~/devel/fleetforecast/target/fleetForecast-1.0-SNAPSHOT
我在以下位置找到我的文件:
~/devel/fleetforecast/target/fleetForecast-1.0-SNAPSHOT/WEB-INF/classes/ANALYSIS_template.xlsx
我必须将此文件读入File对象,以传递给一些代码来创建一组XLSX文件,这些文件最终将提供给用户。
尝试这样。 打包war文件后,/ src / main / resources中的任何文件都以您Webapp的根目录结尾。 我认为您也应该优先使用getResourceAsStream而不是getResource,因为后者只能从文件系统读取文件。
BufferedReader br = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/Analysis_template.xlsx")));
// Now do something with br
希望对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.