很少写单纯的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];相关推荐

  1. spring加载xsd文件

    本文原文连接: http://blog.csdn.net/bluishglc/article/details/7596118 ,转载请注明出处! 有时候你会发现过去一直启动正常的系统,某天启动时会报出 ...

  2. Spring加载properties文件的两种方式

    2019独角兽企业重金招聘Python工程师标准>>> 在项目中如果有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取pro ...

  3. spring加载properties文件顺序

    我们在使用spring是,在配置文件中经常需要使用到<context:property-placeholder location="" />标签.这样系统配置就能直接写 ...

  4. 解决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 ...

  5. spring加载properties文件

    <context:property-placeholder location="classpath:jdbc.properties,classpath:setting.properti ...

  6. Spring加载资源文件的方式

    UrlResource 封装了java.net.URL,它能够被用来访问任何通过URL可以获得的对象,例如:文件.HTTP对象.FTP对象等.所有的URL都有个标准的 String表示,这些标准前缀可 ...

  7. Spring如何加载XSD文件(org.xml.sax.SAXParseException: Failed to read schema document错误的解决方法)...

    本文原文连接: http://blog.csdn.net/bluishglc/article/details/7596118 ,转载请注明出处! 有时候你会发现过去一直启动正常的系统,某天启动时会报出 ...

  8. org.xml.sax.SAXParseException: Failed to read schema document错误的完美解决方法 以及 Spring如何加载XSD文件

    有时候你会发现过去一直启动正常的系统,某天启动时会报出形如下面的错误: org.xml.sax.SAXParseException: schema_reference.4: Failed to rea ...

  9. Spring如何加载XSD文件

    http://blog.csdn.net/bluishglc/article/details/7596118 本文原文连接: http://blog.csdn.net/bluishglc/articl ...

最新文章

  1. 当人工智能掌管城市,会带来怎样的巨变?
  2. jQuery遍历函数总结
  3. 3月12日云栖精选夜读 | 安全多方计算新突破!阿里首次实现“公开可验证” 的安全方案...
  4. the next journal submission for mechanism should be at this journal
  5. react 动态路 嵌套动子路由_2020年,我是如何从一名Vueer转岗到React阵营
  6. redhat下svn服务器搭建
  7. 驱动——K7-DMA-PCIe
  8. 大型网站架构的演化[转]
  9. python编写小程序、模拟实现自动按下键盘_Python 实现键盘鼠标按键模拟
  10. 海思芯片MPP工作流程
  11. 应届毕业生零基础转行做程序员,怎么看?
  12. 学习笔记42—Win7下安装Linux双系统
  13. 基于Java的GUI界面+SQL Server数据库课程信息管理系统
  14. TF卡/SD卡 异常问题,识别不了
  15. 常见的数据结构和数据库的设计方法
  16. 网络基础知识之IP与子网掩码和网络地址
  17. 基于ThinkPHP6+Layui后台开发框架
  18. 用户登录,并验证验证码以及密码
  19. MVC设计模式及Sprint MVC设计模式
  20. batocera笔记本调节亮度教程

热门文章

  1. Java 中如何把 Excel 转换成 csv
  2. 最简单的slob实现
  3. 提取PDF里面的EXCEL表格
  4. stm32专题二十七:MPU6050 驱动程序
  5. pytorch x.numel()
  6. 20210331:人脸识别-静默活体
  7. Ubuntu安装遇到无法打开锁文件
  8. 深度学习入门(三)------- 阶跃函数和Sigmoid函数
  9. 3.4.6.进程的诞生和消亡
  10. easypoi必填项_EasyExcel对Excel文件的解析过程