记一次不兼容导致的tomcat启动异常

一、异常信息

24-May-2019 17:18:39.476 信息 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.ApplicationContext.log Initializing Spring root WebApplicationContext
24-May-2019 17:18:40.282 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.catalina.core.StandardContext.listenerStart Exception sending context initialized event to listener instance of class [org.springframework.web.context.ContextLoaderListener]
	org.springframework.beans.factory.parsing.BeanDefinitionParsingException: Configuration problem: Failed to import bean definitions from relative location [user-service.xml]
Offending resource: URL [file:/D:/club/lenovo-api/target/lenovo-api/WEB-INF/classes/spring-context.xml]; nested exception is org.springframework.beans.factory.BeanDefinitionStoreException: Failed to read candidate component class: file [D:\club\lenovo-api\target\lenovo-api\WEB-INF\classes\com\lenovo\club\user\resources\service\UserResourceServiceImpl.class]; nested exception is java.lang.ArrayIndexOutOfBoundsException: 2344
		at org.springframework.beans.factory.parsing.FailFastProblemReporter.error(FailFastProblemReporter.java:68)
		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:218)
		at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseDefaultElement(DefaultBeanDefinitionDocumentReader.java:147)
		at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.parseBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:132)
		at org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader.registerBeanDefinitions(DefaultBeanDefinitionDocumentReader.java:93)
		at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.registerBeanDefinitions(XmlBeanDefinitionReader.java:493)
		at org.springframework.beans.fac

二、解决思路

  1. 因为是从gitlab上面直接拉到idea的项目,第一次出现这个异常之后以为是项目的配置有问题,参照网上很多方法重新配置,重新导入等,然而都不管用。。。
  2. 根据异常信息猜想是没有加载到spring的配置,反复查看与更改web.xml中的spring位置信息,也没有效果。
  3. 尝试了一下启动其他分支,神奇的是起来了,由此猜想是自己更改其中代码时有问题。
  4. 可是自己没有更改过任何的配置文件,只是对代码进行了一下简单重构,唯一重构过程中和以前不一样的地方就是用了一下lamda表达式,注释之后发现真的是lamda表达式的问题。。。
  5. 原因:项目使用的spring环境是spring3.2,然而查阅后发现spring3.2不支持Java8,我们环境用的是Java8,所以虽然编译没有报错,但是由于spring3.2和Java8不兼容,导致了上述的错误。

三、重构的代码

重构前

Callable<String> call = new Callable<String>() {
	@Override
	public String call() {
	String json = userRemoteService.validNickNameNoCall(uid, nickname);
			return json;
		}
};
Future<String> future = userPool.submit(call);

重构后

Future<String> future = userPool.submit(() -> userRemoteService.validNickNameNoCall(uid, nickname));

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页