我有一個程序,我在一個Spring項目中運行,它總是因爲java.io.FileNotFoundException
而失敗,當涉及到定位DispatcherServlet
時。java.io.FileNotFoundException:用於WebApp中的DispatcherServlet
DispatcherServlet
住在\WEB-INF
文件夾中,可供項目其餘部分無障礙訪問。
所以此刻我被迫如下的路徑硬編碼到DispatcherServlet
:
File config = new File("C:\\project\\build\\web\\WEB-INF\\project-servlet.xml");
boolean exists = Misc.checkFileExists(config.getAbsolutePath());
if (exists) {
System.out.println("File: " + config.getAbsolutePath() + " found.");
}
ConfigurableApplicationContext context = new FileSystemXmlApplicationContext(config.getAbsolutePath());`
這是不是在所有的最佳途徑。
但是,如果我嘗試將DispatcherServlet
放置在\WEB-INF
下的文件夾中,例如, \WEB-INF\resources
以滿足CLASSPATH
,該文件仍未找到。因此,我不能使用ClassPathXmlApplicationContext
。
我已經設置我的web.xml
文件,如下所示的解決了這個:
<servlet>
<servlet-name>project</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/project-servlet.xml</param-value>
</init-param>
</servlet>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/project-servlet.xml</param-value>
</context-param>
應用程序工作與做測試程序:
ConfigurableApplicationContext context = new ClassPathXmlApplicationContext("project-servlet.xml");
我要補充一點,我有一個project-servlet.xml
文件它配置了一切。
什麼是完整的異常堆棧跟蹤,以及導致此堆棧跟蹤的代碼是什麼? –
已添加到問題中。 –
WEB-INF文件夾不在類路徑中。 WEB-INF/classes和WEB-INF/lib文件夾默認包含在classpath中。還可以在web.xml中使用WebApplicationContext使用ContextLoaderListener來配置您的Spring上下文。 – dinukadev