2

我有一些东西在src/main/resources路径下。具体来说,我有一个名为报告的报告模板文件夹。

我知道当应用程序被部署/运行时,所有文件和文件夹src/main/resources都转到类路径,即我的项目的WEB-INF/classes.

这意味着WEB-INF/classes/reports将在我的服务器中创建一个文件夹。

现在我想以路径而不是输入流的形式访问我的报告,因为我在 java 中的报告代码支持文件路径而不是输入流。所以我必须能够获得WEB-INF/classes/reports绝对路径(或相对路径,只要它是正确的我不在乎)。

阅读有关类似问题的一些答案,我已经尝试了以下方法:

  1. getClass().getResource(".").getPath();--> 这将返回我当前在我的类路径中的类的确切路径,即:C:\Tools\JBoss Application Server 7.1.1\standalone\deployments\myProject.war\WEB-INF\classes\aaa\bbb\ccc\ddd

  2. 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

如果不可能,我将获取第一个路径并根据需要返回尽可能多的文件夹以到达类文件夹。

谢谢你。

4

1 回答 1

1

您需要ServletContext.getRealPath(String)方法。

getServletContext().getRealPath("/WEB-INF")
于 2013-09-10T12:43:35.133 回答