Spring加载xml文件错误异常:Offending resource: class path resource [spring-context.xml];
很少写单纯的java工程,在运行的时候,加载xml文件的时候报错,在此记录错误信息,备自己以后查阅,错误信息如下:
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m; support was removed in 8.0
log4j:WARN File option not set for appender [error].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?
log4j:ERROR Either File or DatePattern options are not set for appender [error].
log4j:WARN File option not set for appender [DEBUG].
log4j:WARN Are you using FileAppender instead of ConsoleAppender?
log4j:ERROR Either File or DatePattern options are not set for appender [DEBUG].
2017-10-10-18-43 [main] [org.springframework.context.support.ClassPathXmlApplicationContext] [INFO] - Refreshingorg.springframework.context.support.ClassPathXmlApplicationContext@57fa26b7: startup date [Tue Oct 10 18:43:15 CST 2017]; root of context hierarchy
log4j:ERROR No output stream or file set for the appender named [DEBUG].
2017-10-10-18-43 [main] [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] [INFO] - Loading XML bean definitions from class path resource [spring-context.xml]
2017-10-10-18-43 [main] [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] [INFO] - Loading XML bean definitions from class path resource [spring-mongodb.xml]
org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from URL location [classpath:spring-mongodb.xml]
Offending resource: class path resource [spring-context.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [spring-mongodb.xml]; nested exception is java.lang.IllegalArgumentException: ResourceLoader must not be null
at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:70)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:85)
at org.springframework.beans.factory.parsing.ReaderContext.error(ReaderContext.java:76)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:235)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:186)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:171)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:144)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:100)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:510)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:188)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:252)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:127)
at org.springframework.context.support.AbstractXmlApplicationContext.loadBeanDefinitions(AbstractXmlApplicationContext.java:93)
at org.springframework.context.support.AbstractRefreshableApplicationContext.refreshBeanFactory(AbstractRefreshableApplicationContext.java:129)
at org.springframework.context.support.AbstractApplicationContext.obtainFreshBeanFactory(AbstractApplicationContext.java:614)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:515)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
at com.ai.core.start.Main.main(Main.java:25)
Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Unexpected exception parsing XML document from class path resource [spring-mongodb.xml]; nested exception is java.lang.IllegalArgumentException: ResourceLoader must not be null
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:414)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:336)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:304)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:181)
at org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:217)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.importBeanDefinitionResource(DefaultBeanDefinitionDocumentReader.java:229)
... 20 more
Caused by: java.lang.IllegalArgumentException: ResourceLoader must not be null
at org.springframework.util.Assert.notNull(Assert.java:115)
at org.springframework.core.io.support.ResourcePatternUtils.getResourcePatternResolver(ResourcePatternUtils.java:62)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.setResourceLoader(ClassPathScanningCandidateComponentProvider.java:238)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.<init>(ClassPathScanningCandidateComponentProvider.java:127)
at org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider.<init>(ClassPathScanningCandidateComponentProvider.java:110)
at org.springframework.data.mongodb.config.MappingMongoConverterParser.getInititalEntityClasses(MappingMongoConverterParser.java:304)
at org.springframework.data.mongodb.config.MappingMongoConverterParser.potentiallyCreateMappingContext(MappingMongoConverterParser.java:203)
at org.springframework.data.mongodb.config.MappingMongoConverterParser.parse(MappingMongoConverterParser.java:99)
at org.springframework.beans.factory.xml.NamespaceHandlerSupport.parse(NamespaceHandlerSupport.java:74)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1427)
at org.springframework.beans.factory.xml.BeanDefinitionParserDelegate.parseCustomElement(BeanDefinitionParserDelegate.java:1417)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:174)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.doRegisterBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:144)
at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:100)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:510)
at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:392)
开始遇到此问题,想偷懒直接上网上查一下,看看是否能解决,发现说的都对,但是没有解决我的错误,所以就跟踪源码
XmlBeanDefinitionReader
MappingMongoConverterParser
ClassPathScanningCandidateComponentProvider
ResourcePatternUtils
一步步跟踪到public abstract class AbstractRefreshableConfigApplicationContext extends AbstractRefreshableApplicationContext
implements BeanNameAware, InitializingBean这个类下面的次方法
public void setConfigLocations(String[] locations) {
if (locations != null) {
Assert.noNullElements(locations, "Config locations must not be null");
this.configLocations = new String[locations.length];
for (int i = 0; i < locations.length; i++) {
this.configLocations[i] = resolvePath(locations[i]).trim();
}
}
else {
this.configLocations = null;
}
}
然后在找到最后的入口:
public class ClassPathXmlApplicationContext extends AbstractXmlApplicationContext这个类的这个方法
public ClassPathXmlApplicationContext(String[] configLocations, boolean refresh, ApplicationContext parent)
throws BeansException {
super(parent);
setConfigLocations(configLocations);
if (refresh) {
refresh();
}
}
发现String[] configLocations这个参数,是个数组,由于非web工程在加载的时候,需要把所有的xml保存到容器中,然后才能互相引用,所以首先一次性全部加载到容器中,放在上下文环境 在main函数中修改为:
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[]{"classpath:/*.xml"});
注意:属性文件例如jdbc.properties里面的配置尽量写在xml文件中,如果必须要写在.properties文件,也应该把其放在同一个上下文环境中。不然就要放在xml中
在Eclipse环境中正常运行,当把jar放到测试环境,运行还是依然报错。此时把所有的spring版本都更新到最高版本,结果正常。可能存在版本不兼容的问题导致。
Spring加载xml文件错误异常:Offending resource: class path resource [spring-context.xml];相关推荐
- spring加载xsd文件
本文原文连接: http://blog.csdn.net/bluishglc/article/details/7596118 ,转载请注明出处! 有时候你会发现过去一直启动正常的系统,某天启动时会报出 ...
- Spring加载properties文件的两种方式
2019独角兽企业重金招聘Python工程师标准>>> 在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取pro ...
- spring加载properties文件顺序
我们在使用spring是,在配置文件中经常需要使用到<context:property-placeholder location="" />标签.这样系统配置就能直接写 ...
- 解决spring的xml文件cannot be open ( class path resource cannot be opened)
xml文件一直显示cannot be open 报错语句有一条: class path resource [bean2.xml] cannot be opened because it does no ...
- spring加载properties文件
<context:property-placeholder location="classpath:jdbc.properties,classpath:setting.properti ...
- Spring加载资源文件的方式
UrlResource 封装了java.net.URL,它能够被用来访问任何通过URL可以获得的对象,例如:文件.HTTP对象.FTP对象等.所有的URL都有个标准的 String表示,这些标准前缀可 ...
- Spring如何加载XSD文件(org.xml.sax.SAXParseException: Failed to read schema document错误的解决方法)...
本文原文连接: http://blog.csdn.net/bluishglc/article/details/7596118 ,转载请注明出处! 有时候你会发现过去一直启动正常的系统,某天启动时会报出 ...
- org.xml.sax.SAXParseException: Failed to read schema document错误的完美解决方法 以及 Spring如何加载XSD文件
有时候你会发现过去一直启动正常的系统,某天启动时会报出形如下面的错误: org.xml.sax.SAXParseException: schema_reference.4: Failed to rea ...
- Spring如何加载XSD文件
http://blog.csdn.net/bluishglc/article/details/7596118 本文原文连接: http://blog.csdn.net/bluishglc/articl ...
最新文章
- 当人工智能掌管城市,会带来怎样的巨变?
- jQuery遍历函数总结
- 3月12日云栖精选夜读 | 安全多方计算新突破!阿里首次实现“公开可验证” 的安全方案...
- the next journal submission for mechanism should be at this journal
- react 动态路 嵌套动子路由_2020年,我是如何从一名Vueer转岗到React阵营
- redhat下svn服务器搭建
- 驱动——K7-DMA-PCIe
- 大型网站架构的演化[转]
- python编写小程序、模拟实现自动按下键盘_Python 实现键盘鼠标按键模拟
- 海思芯片MPP工作流程
- 应届毕业生零基础转行做程序员,怎么看?
- 学习笔记42—Win7下安装Linux双系统
- 基于Java的GUI界面+SQL Server数据库课程信息管理系统
- TF卡/SD卡 异常问题,识别不了
- 常见的数据结构和数据库的设计方法
- 网络基础知识之IP与子网掩码和网络地址
- 基于ThinkPHP6+Layui后台开发框架
- 用户登录,并验证验证码以及密码
- MVC设计模式及Sprint MVC设计模式
- batocera笔记本调节亮度教程