栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

NoClassDefFoundError

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

NoClassDefFoundError

Constructor threw exception; nested exception is java.lang.NoClassDefFoundError

在项目启动时引发这样的错误,基本都是版本不一致引起的。

先给解决思路:

1.先用idea自带的Dependency Analyzer(没有自带的,可以去插件库下载一个maven helper插件),查看依赖版本是否有冲突,然后一般是排除掉低版本的依赖

2.检查自己项目模块中的 dependencyManagement 的 dependency,是否指定了低版本的依赖,而自己项目的其他模块用了高版本的依赖。

3.检查自己项目模块中的 dependencyManagement 的 dependency 中是否有type为pom,scope为import的依赖,这种依赖里面如果也用了dependencyManagement那么将会附加到自己的项目的dependencyManagement中去,如果它的里面指定了低版本的依赖,也会有问题

注意:第3点不容易发现

原理分析: jvm在启动加载类的时候,会有双亲委派机制。

复习一下jvm加载类步骤的知识:

1.自定义加载器是否已经加载
2.系统类加载器是否已经加载
3.扩展类加载器是否已经加载
4.启动类加载器是否已经加载
5.启动类加载器能否加载
6.扩展类加载器能否加载
7.系统类加载器能否加载
8.自定义加载器能否加载

如果jvm在上述的加载阶段加载了低版本的依赖,会导致高版本的依赖不会加载。从而到运行的时候发现找不到类而报错。

最后附上一个pom例子:



  4.0.0
  
    org.springframework.boot
    spring-boot-starter-parent
    2.7.1
     
  
  com.example
  TestPom
  0.0.1-SNAPSHOT
  TestPom
  TestPom

  
    1.8
    UTF-8
    UTF-8
  
  
    
      org.springframework.boot
      spring-boot-starter-web
    
    
      org.projectlombok
      lombok
      true
    
  
  
    
      
      
        jjwt-root
        io.jsonwebtoken 
        import
        pom
        0.11.2
      
    
  
  
    
      
        org.springframework.boot
        spring-boot-maven-plugin
        
          
            
              org.projectlombok
              lombok
            
          
        
      
    
  



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/995620.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号