java.lang.NoClassDefFoundError: org/springframework/web/context/WebApplicationContext

一、NoClassDefFoundError与ClassNotFoundException
  NoClassDefFoundError错误的发生,是因为Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误。例如在运行时我们想调用某个类的方法或者访问这个类的静态成员的时候,发现这个类不可用,此时Java虚拟机就会抛出NoClassDefFoundError错误。

  ClassNotFoundException这个错误发生只在运行时需要加载对应的类不成功,而不是编译时发生。

  NoClassDefFoundError发生在JVM在动态运行时,根据你提供的类名,在classpath中找到对应的类进行加载,但当它找不到这个类时,就发生了java.lang.NoClassDefFoundError的错误,而ClassNotFoundException是在编译的时候在classpath中找不到对应的类而发生的错误。

  简单总结就是,NoClassDefFoundError发生在编译时对应的类可用,而运行时在Java的classpath路径中,对应的类不可用导致的错误

二、NoClassDefFoundError出现的原因  

   对应的Class在java的classpath中不存在

 我遇到的情况是这样的:

 同一个项目中有多个模块,每个模块对应自己的pom,其中base模块导入了 spring-web的坐标,另一个spin没有导入

但是在编译的时候,spin可以找到WebApplicationContext,但是运行时就报错。

三、NoClassDefFoundError解决方法

  导入相应类(WebApplicationContext)的jar或maven坐标

 

猜你喜欢

转载自www.cnblogs.com/756623607-zhang/p/9296575.html