我在src/main/resources
路径下有一些东西。
具体来说,我有一个名为reports的报告模板文件夹。
据我所知,当部署/运行应用程序时,src/main/resources
下的所有文件和文件夹都会转到类路径,即我的项目WEB-INF/classes
。
这意味着我的服务器中将创建一个文件夹WEB-INF/classes/reports
。
现在我想访问我的报告作为路径,而不是输入流,因为我在java中的报告代码支持文件路径而不是输入流。所以我必须能够得到WEB-INF/classes/reports
绝对路径(或者相对,只要它是正确的我就不在乎。)
阅读有关类似问题的一些答案,我已经尝试过以下事项:
getClass().getResource(".").getPath();
- >这将返回我当前在类路径中的类的确切路径,即:C:\Tools\JBoss Application Server 7.1.1\standalone\deployments\myProject.war\WEB-INF\classes\aaa\bbb\ccc\ddd
getClass().getClassLoader().getResource(".").getPath();
- >这会返回:C:\Tools\JBoss Application Server 7.1.1\modules\sun\jdk\main\service-loader-resources
,这完全不相关。
我想要回复C:\Tools\JBoss Application Server 7.1.1\standalone\deployments\myProject.war\WEB-INF\classes
如果无法实现,我将获得第一条路径并根据需要返回多个文件夹以访问类文件夹。
谢谢。
答案 0 :(得分:1)
您需要ServletContext.getRealPath(String)方法。
getServletContext().getRealPath("/WEB-INF")