情景:
想在应用启动的时候就加载spring容器 在ServletContextListener.contextInitialized()中加载spring容器ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");结果发现一直报"找不到文件的IO错误",于是就打印下当前路径
"D:\install\eclipse-jee-mars-1-win32-x86_64\eclipse"
结果居然跑到了eclipse的安装目录来了,不是工作目录也不是tomcat的目录,这就神奇了吧
然后我就直接用tomcat发布,不用eclipse了
结果当前路径在
"C:\Program Files\Apache Software Foundation\Tomcat 8.0_Tomcat\bin"
这就尴尬了,我的应用在webapps里面啊,怎么会跑到这里来了呢
原因
一、eclipse
在eclipse中,启动服务器是由eclipse.exe启动
servletcontext监听器的初始化是在启动服务器的过程就完成的,所以自然当前目录在"D:\install\eclipse-jee-mars-1-win32-x86_64\eclipse"
二、tomcat
在tomcat中,启动服务器是由startup.bat启动
所以当前目录就在"C:\Program Files\Apache Software Foundation\Tomcat 8.0_Tomcat\bin"
不同环境的web目录结构
凡是涉及到路径的,都会因为环境的不同而不同,window、linux、eclipse、tomcat各不相同
eclipse的目录结构
tomcat的目录结构
总结
特别要注意的是class文件的放置!!!
在eclipse中class放在/build/classes里面
在tomcat中class放在/WEB-INF/classess里面