java.lang.NoClassDefFoundError异常原因分析和解决方案
问题:项目在本地没有报错,在服务器部署的时候报java.lang.NoClassDefFoundError异常。发生此问题的时候,在本地的开发工具也会有此异常的警告(开发工具没有关闭警告提示)。原因:1.JVM编译时能找到合适的类,运行时不能找到导致错误。例如运行时调用某个类的方法或者访问这个类的静态成员的时,发现这个类不可用,此时Ja...
问题:
项目在本地没有报错,在服务器部署的时候报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,微服务;
更多推荐
所有评论(0)