java.lang.NoClassDefFoundError异常原因分析和解决方案

问题:

     项目在本地没有报错,在服务器部署的时候报java.lang.NoClassDefFoundError异常。

     发生此问题的时候,在本地的开发工具也会有此异常的警告(开发工具没有关闭警告提示)。     


原因:

       1.JVM编译时能找到合适的类,运行时不能找到导致错误。例如运行时调用某个类的方法或者访问这个类的静态成员的时,发现这个类不可用,此时Java虚拟机就会抛出NoClassDefFoundError错误。

       与ClassNotFoundException的不同在于:此错误发生在运行时需要加载对应的类不成功,而不是编译时发生。很多Java开发者很容易在这里把这两个错误搞混。

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

解决方案:

 

      1.maven项目:检查项目中的jar包是否和编译时的jar包一样(版本是否一致),下载相关jar包。

      2.非maven项目:检查项目中的jar包是否和编译时的jar包一样(版本是否一致),非maven项目的jar不会自动下载,需手动下载;若存在多个项目之间互相调用时,确保每个项目中都有相关的jar包,尤其是在不使用maven控制的微服务项目中常发生。
         

相关知识点:

      1.JVM加载;

      2.maven,微服务;

 

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值