无法初始化主类 java.lang.NoClassDefFoundError
说一下很困惑的事情,最近在学spring然后在导入四个核心和一个依赖后写了一个简单接口和实现类来实现spring的IOC。在完成后点击运行就报出了:无法初始化主类,java.lang.NoClassDefFoundError…的错误。搜索资料后总结了一下产生这种情况的原因:
一、项目依赖的jar包未全部导入
如:java.lang.NoClassDefFoundError[Lorg/springframework/context/ApplicationContextInitializer,当你去查这个类的时候发现这个类是存在,之所以报错是因为在这个类里面的方法引用了其他jar包中的类的方法,而这个被引用的这个jar包刚好缺失,所以抛出这个错。
**解决办法:**一层一层去查找并导入缺失的jar包。
二、JDK与Spring版本不兼容
如:
Spring5.1.4就不兼容jdk11,此时只需把jdk11换成jdk8或9即可
**解决办法:**将自己的jdk更换为jdk1.8
eclipse中更改JDK版本:更改Eclipse中的JDK
总结
我只是简单模拟一下IOC,所以不会有缺少包的情况发生。然后又检查了该包是否依赖其他jar包,于是就将spring的所有包全部导入,发现问题还没有解决。然后在console中发现我的jdk竟然是1.4,感觉肯定是jdk的问题,便在eclipse中更改的jdk的版本,更改后发现运行正确、BUG解决,继续开启学习Spring之路。