最近遇到了一个奇葩的问题,在项目开发中,一些同事的idea突然就编译不过去了,点击【RUN】会报出下面的错误:
org.springframework.beans.factory.support.DefaultListableBeanFactory
-->Bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'sysTestMapper' defined in URL
[jar:file:/E:/NewERP1/jiankunking/jiankunking-web/target/jiankunking-web-1.0-SNAPSHOT/WEB-INFb/jiankunking-system-1.0-SNAPSHOT.jar!/org/jiankunking/system/member/sysTestMapper.class]:
Initialization of bean failed; nested exception is java.lang.StackOverflowError
点击【debug】运行会提示下面的错误:
org.springframework.beans.factory.support.DefaultListableBeanFactory
-->Bean creation exception on FactoryBean type check: org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'sysTestMapper' defined in URL
[jar:file:/E:/NewERP1/jiankunking/jiankunking-web/target/jiankunking-web-1.0-SNAPSHOT/WEB-INFb/jiankunking-system-1.0-SNAPSHOT.jar!/org/jiankunking/system/member/sysTestMapper.class]:
Unsatisfied dependency expressed through bean property 'sqlSessionFactory': :
Error creating bean with name 'sqlSessionFactory' defined in URL
[jar:file:/E:/NewERP1/jiankunking/jiankunking-web/target/jiankunking-web-1.0-SNAPSHOT/WEB-INFb/jiankunking-web-1.0-SNAPSHOT.jar!/spring/spring-mybatis.xml]:
Invocation of init method failed;
nested exception is java.lang.NoClassDefFoundError:
Could not initialize class org.apache.xpath.compiler.FunctionTable; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in URL
[jar:file:/E:/NewERP1/jiankunking/jiankunking-web/target/jiankunking-web-1.0-SNAPSHOT/WEB-INFb/jiankunking-web-1.0-SNAPSHOT.jar!/spring/spring-mybatis.xml]:
Invocation of init method failed;
nested exception is java.lang.NoClassDefFoundError:
Could not initialize class org.apache.xpath.compiler.FunctionTable
找过各种各种方式来处理这个问题,最后发现在debug模式下,在:
org.springframework.beans.factory.support.DefaultListableBeanFactory
spring的DefaultListableBeanFactory类中每个throw 异常的地方打上断点,在debug模式下就可以跑起来了。
无语中。。。。竟然可以这样解决问题。
过了一段时间,这种方式也不行了,又是会重启idea问题就消失了。
但问题还是不时的出现,代码都是一样的,而且代码打包后,在tomcat里面是可以正常运行的,而问题只有几个同事的开发环境中会出现,所以,应该是环境问题,卸载Tomcat、JDK,重装之后问题消失。
—————————————————————————问题再次出现,原因查找—————————————————————————
今天同事又遇到这个问题了,在cmd窗口下:
java -version
看到的jdk版本是1.8
javac -version
看到的版本是1.7
需要注意编译jdk版本和运行时的jdk版本,运行时jdk版本不能小于编译时候的jdk版本。
在idea中用的版本是jdk1.7.0_69
从360中可以看到同事的环境中安装了很多jdk
我从360中卸载JDK 8还有JDK 1.7.0_69,然后重新设置一下系统环境中的环境变量,在idea中重新选一下jdk即可
—————————————————————————问题解决—————————————————————————
作者:jiankunking 出处:http://blog.csdn.net/jiankunking