FileSystemXmlApplicationContex和ClassPathXmlApplicationContext路径问题:在码代码的时候发现使用这两个方法写路径的时候总是存在问题,所以百度了一下解决了这个问题。
ApplicationContext ac = new FileSystemXmlApplicationContext(path);
path取的是绝对路径,通过"ClassName.class.getResource("/").getPath()"的形式取得,在windows下面是类似:/C:/test.xml,在linux的值是/etc/tomcat/webapps/WEB-INFO/test.xml 该表达式在windows下面能够正常使用的,但是在linux下面的时候该表达式会发生文件找不到的异常 但是,path的路径是对的,原因好像是把path当作了相对路径来处理了,然后会在path前面加上一段路径。
关于FileSystemXmlApplicationContext这个路径有2种写法:有盘符的代表绝对路径D:/wokespace/spring/WebRoot/WEB-INF/classes/xxx.xml。没有盘符的代表的项目的根路径。比如放在Webroot的WEB-INF下面,路径可以写成"/WebRoot/WEB-INF/xxx.xml"如果想要在FileSystemXmlApplicationContext读取classpath下面的文件,可以写成/WebRoot/WEB-INF/classes/xxx.xml,也可以写成classpath:xxx.xml,classpath代表的路径就是:/WebRoot/WEB-INF/classes/。
关于ClassPathXmlApplicationContext这个路径默认的是读取workspace下面的classes文件夹下的文件,可以在前面加上classpath:当然不加也是没问题的。这个classes文件夹默认在myeclipse中是不显示的,如果想显示classes文件夹,可以右键WEB-INF ->show in->package explorer,然后在package explorer目录下继续选着WEB-INF文件夹,右键->show in ->navigator,新出来的目录中就显示classes文件夹了。当然也可以用绝对路径来表示:D:/wokespace/spring/WebRoot/WEB-INF/classes/xxx.xml。在偶然一次中发现也可以用file:WebRoot/WEB-INF/classes/xxx.xml也可以读取到相关的文件,但是去掉file:就报IO异常,具体什么情况不是很清楚,也是这节中的一个小疑问,等以后有时间了来解决。
CopyRight@2015-2024 IT手机世界 All Right Reserved
工信备案号:京备A2-2009413
IT手机世界畅享移动互联时代智能智慧新生活