我有一个具有以下结构的战争文件。
--js
--sum.js
--WEB-INF
--classes
---com
-----test
-----MyTest.class
--home.html
我正在尝试读取MyTest.class文件中的js文件,但是在读取时出现异常。我尝试了堆栈中已经提到的大多数解决方案。
我试过了
1)
String path = Thread.currentThread().getContextClassLoader().getResource("js/sum.js").getPath();
File f = new File(path);
System.out.println(f.getAbsolutePath());
第一行引发nullpointer异常
2)
InputStream in =MyNashHornTest.class.getClassLoader().getResourceAsStream("/js/sum.js");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
第二行抛出空指针异常
3)
InputStream in =MyNashHornTest.class.getClassLoader().getResourceAsStream("../../../../js/sum.js");
BufferedReader br = new BufferedReader(new InputStreamReader(in));
第二行抛出空指针异常
请帮助我解决此问题。
对于war文件,请不要使用Servlet容器的类加载器,而应使用ServletContext。
此方法允许servlet容器从任何位置使servlet可以使用资源,而无需使用类加载器。
ServletContext context = getServletContext();
InputStream is = context.getResourceAsStream("/yourfilename.txt");
如果您不希望浏览器访问它,建议将其保存在/ WEB-INF目录下。
该路径必须以a开头,« / »
并被解释为相对于当前上下文根。如果指定路径上不存在任何资源,则此方法返回null。例如,ServletContext.getResourceAsStream(« WEB-INF/resources/yourfilename.cnf »)
将返回nul异常,因此要小心!
该路径必须以“ /”开头,并被解释为相对于当前上下文根。如果指定路径上不存在任何资源,则此方法返回null。例如,使用不以斜杠开头的路径,您将获得空返回值。
详细信息在这里给出:如何使用ServletContext.getResourceAsStream(java.lang.String path)?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句