代码如下:private static ApplicationContext actx = null; public void run()
{
initApplicationContext();
} protected void initApplicationContext()
{
if (actx == null)
{
try
{
System.out.println(InitialServlet.APPLICATION_CONFIGE_PATH);FIGE_PATH);
actx = new FileSystemXmlApplicationContext(InitialServlet.APPLICATION_CONFIGE_PATH);FIGE_PATH);
}
catch (Exception ex)
{
logger.error("init error :", ex);
}
}
}日志中记录的异常为: - init error :
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from file [/home/gmccserver/czmobile/tomcat/bin/home/gmccserver/czmobile/HZMobile/WEB-INF/conf/applicationContextByUpdateLog.xml]; nested exception is java.io.FileNotFoundException: home/gmccserver/czmobile/HZMobile/WEB-INF/conf/applicationContextByUpdateLog.xml (No such file or directory)
Caused by:
java.io.FileNotFoundException: home/gmccserver/czmobile/HZMobile/WEB-INF/conf/applicationContextByUpdateLog.xml (No such file or directory)但是out.println()打印出来的文件路径是正确的(/home/gmccserver/czmobile/HZMobile/WEB-INF/conf/applicationContextByUpdateLog.xml ),在解析的时候怎么就少了个“/”,报文件路径找不到!
虽然后来我判断了下,加了个“/”上去了,能正常跑起来
但是就是不明白解析的时候为什么会出错,FileSystemXmlApplicationContext不是不分绝对路径和相对路径的吗?
{
initApplicationContext();
} protected void initApplicationContext()
{
if (actx == null)
{
try
{
System.out.println(InitialServlet.APPLICATION_CONFIGE_PATH);FIGE_PATH);
actx = new FileSystemXmlApplicationContext(InitialServlet.APPLICATION_CONFIGE_PATH);FIGE_PATH);
}
catch (Exception ex)
{
logger.error("init error :", ex);
}
}
}日志中记录的异常为: - init error :
org.springframework.beans.factory.BeanDefinitionStoreException: IOException parsing XML document from file [/home/gmccserver/czmobile/tomcat/bin/home/gmccserver/czmobile/HZMobile/WEB-INF/conf/applicationContextByUpdateLog.xml]; nested exception is java.io.FileNotFoundException: home/gmccserver/czmobile/HZMobile/WEB-INF/conf/applicationContextByUpdateLog.xml (No such file or directory)
Caused by:
java.io.FileNotFoundException: home/gmccserver/czmobile/HZMobile/WEB-INF/conf/applicationContextByUpdateLog.xml (No such file or directory)但是out.println()打印出来的文件路径是正确的(/home/gmccserver/czmobile/HZMobile/WEB-INF/conf/applicationContextByUpdateLog.xml ),在解析的时候怎么就少了个“/”,报文件路径找不到!
虽然后来我判断了下,加了个“/”上去了,能正常跑起来
但是就是不明白解析的时候为什么会出错,FileSystemXmlApplicationContext不是不分绝对路径和相对路径的吗?
FileSystemXmlApplicationContext总是去掉开头的/,见源代码
protected Resource getResourceByPath(String path) {
if (path != null && path.startsWith("/")) {
path = path.substring(1);
}
return new FileSystemResource(path);
}
/home/gmccserver/czmobile/HZMobile/WEB-INF/conf/applicationContextByUpdateLog.xml
actx = new FileSystemXmlApplicationContext(“file:”+InitialServlet.APPLICATION_CONFIGE_PATH)
//用classpath路径也可以 // ApplicationContext factory=new ClassPathXmlApplicationContext("classpath:appcontext.xml");// ApplicationContext factory=new ClassPathXmlApplicationContext("appcontext.xml"); // ApplicationContext factory=new ClassPathXmlApplicationContext("file:G:/1Java实用项目资源/2Spring/1精通Spring全Jar代码/workspace/workspace/example6/src/appcontext.xml"); //用文件系统的路径 // ApplicationContext factory=new FileSystemXmlApplicationContext("src/appcontext.xml"); //使用了 classpath: 前缀,作为标志, 这样,FileSystemXmlApplicationContext 也能够读入classpath下的相对路径 // ApplicationContext factory=new FileSystemXmlApplicationContext("classpath:appcontext.xml"); // ApplicationContext factory=new FileSystemXmlApplicationContext("file:G:/1Java实用项目资源/2Spring/1精通Spring全Jar代码/workspace/workspace/example6/src/appcontext.xml"); ApplicationContext factory=new FileSystemXmlApplicationContext("G:/1Java实用项目资源/2Spring/1精通Spring全Jar代码/workspace/workspace/example6/src/appcontext.xml");
path = path.substring(1);
}
只有*nux操作系统的路径才会以/开头,
windows上都是:d:/什么的,
所以,不会被截断一个字符。
还是配置相对路径比较好。
path = path.substring(1);
}
源码都给你拉,难道还不懂?
String path="//opt/IBM/WebSphere/AppData/aa.ear/aa.war/WEB-INF/spring/jdbc-config.xml";
c1 = new FileSystemXmlApplicationContext(new String[] {(path)});
前面多加一个“/”即可