奇怪的Spring找不到类异常FatalBeanException
来源:互联网 发布:java中单例模式 编辑:程序博客网 时间:2024/05/10 19:48
今天接手一个Maven项目,导入Eclipse和部署到Tomcat一切正常,但运行Tomcat到Spring初始化上下文时就报:
java.lang.NoClassDefFoundError:org.springframework.beans.FatalBeanException
再三查看项目lib,确认有spring-beans这个jar包,各种修改发布引用的包路径和重新部署,依旧不行,非常奇怪。
问题描述
运行Tomcat,Spring上下文尚未初始化成功就抛出找不到类异常,堆栈信息如下,
2016-03-21 21:31:44 [org.springframework.web.context.ContextLoader]-[ERROR] Context initialization failed java.lang.NoClassDefFoundError: org.springframework.beans.FatalBeanException at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:303) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:299) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:755) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:434) at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306) at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4738) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5181) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:586) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1780) at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown Source)
解决过程
- 按正常思维,报哪个类找不到就看那个类有没有,对应的jar有没有引用部署,确定是部署且存在的,正常思维行不通。
- 怀疑虽有引用,但类的确有可能找不到,在自己业务代码中直接声明一个FatalBeanException引用,运行通过,说明Spring报这个类找不到,并不是这个类找不到,可能是其他错误。
- 根据堆栈信息在对应类代码上打断点,Debug运行跟踪AbstractAutowireCapableBeanFactory.doCreateBean()方法,发现抛出的实际异常是java.lang.StackOverflowError
// Initialize the bean instance. Object exposedObject = bean; try { populateBean(beanName, mbd, instanceWrapper); if (exposedObject != null) { exposedObject = initializeBean(beanName, exposedObject, mbd); } } catch (Throwable ex) { if (ex instanceof BeanCreationException && beanName.equals(((BeanCreationException) ex).getBeanName())) { throw (BeanCreationException) ex; } //抛出的是这个异常,ex为java.lang.StackOverflowError else { throw new BeanCreationException(mbd.getResourceDescription(), beanName, "Initialization of bean failed", ex); } }
解决办法
定位到真实异常是java.lang.StackOverflowError,问题就迎刃而解:增大Tomcat运行时JVM的栈大小-Xss512k。
1 0
- 奇怪的Spring找不到类异常FatalBeanException
- 奇怪的找不到类SpringNamingPolicy的错误
- 找不到类的异常
- 找不到spring的applicationContext.xml异常
- 奇怪的ODBC异常
- Spring单元测试时出现的一个奇怪问题:找不到要注入的bean
- spring的lib下面的jar包与UserLibarayjar包造成的类找不到异常
- jetty 加载包含spring的web,报ClassNotFoundException异常,找不到ContextLoaderListener类
- tomcat抛出的奇怪异常
- Java异常的奇怪问题
- phoenix查询奇怪的异常
- spring 使用aop注解版会抛出奇怪的异常的解决方法
- 启动tomcat的时候一个奇怪的类找不到的错误研究!
- 类找不到异常
- 类找不到异常
- 一个有点奇怪的异常处理问题
- 奇怪的类型初始值设定项异常
- iOS6.0下奇怪的_UIRecordArgumentOfInvocationAtIndex异常
- RxJava实战技巧大全
- Java mail 发送qq邮件-普通文本邮件
- FreeRTOS 内存 Heap 管理
- 9月份实习总结-落花归于平静
- Job和Task运行时的信息维护
- 奇怪的Spring找不到类异常FatalBeanException
- 图片处理类 只有简单的水印缩略功能 手累
- MySQL事物总结
- JFinal Web开发学习(二)目录、架构、package设计
- OneThink后台配置阿里云OSS文件上传
- 视觉差插件parallux和rellax
- OGG源端和目标端数据对接
- 构造函数和拷贝构造函数
- 测试缺陷1