博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
发生NoClassDefFoundError的可能之一
阅读量:6611 次
发布时间:2019-06-24

本文共 886 字,大约阅读时间需要 2 分钟。

hot3.png

错误简述

不久前,在开发过程中,将写好的项目A编译成jar包,放到其他的项目上用的时候(直接引用,而不是使用依赖管理工具),出现如下的错误:

211638_iv3C_3471006.png

错误的全称:java.lang.NoClassDefFoundError,这是一个运行时错误,在编译的时候并不发生。困扰了我好一会儿。

解决方法

原来是原来是项目A编译成的jar包所依赖的jar包不存在。添加就可以了。

详细一点

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

发生错误可能的原因如下:

  1. 对应的Class在java的classpath中不可用
  2. 你可能用jar命令运行你的程序,但类并没有在jar文件的manifest文件中的classpath属性中定义
  3. 可能程序的启动脚本覆盖了原来的classpath环境变量
  4. 因为NoClassDefFoundError是java.lang.LinkageError的一个子类,所以可能由于程序依赖的原生的类库不可用而导致
  5. 检查日志文件中是否有java.lang.ExceptionInInitializerError这样的错误,NoClassDefFoundError有可能是由于静态初始化失败导致的
  6. 如果你工作在J2EE的环境,有多个不同的类加载器,也可能导致NoClassDefFoundError

如果想了解更多关于NoClassDefFoundError的发生机制和解决方法,可以参考下面这篇blog:

本篇blog的部分内容也是来自于这篇blog, 特在此声明。

end

 

转载于:https://my.oschina.net/u/3471006/blog/1616388

你可能感兴趣的文章
springmvc初始化数据
查看>>
python(5)字典
查看>>
eBay和PayPal公布分拆细节:双方还将紧密合作
查看>>
Linux CentOS7 两台机器之间免输入密码相互登录(密钥对认证)
查看>>
汇编程序:显示时间(分秒)
查看>>
用createrepo配置Yum本地源
查看>>
wordpress拿WebShell
查看>>
脚本结构和执行
查看>>
warden创建容器的过程
查看>>
【c++】size_t 和 size_type的区别
查看>>
SpringBoot之浅析配置项解析(三)
查看>>
太感谢DUDU拉!有这样的管理员,博客园能不火吗?
查看>>
15.2. switchport trunk encapsulation dot1q 提示 invaild input at^marker.
查看>>
(EM算法)The EM Algorithm
查看>>
Linux~yum命令安装程序
查看>>
getline函数(精华版)
查看>>
互联网辅助代理IP软件的应用需守牢数据安全的“底线”
查看>>
快速排序及其优化
查看>>
web
查看>>
第七天 结构伪类选择器(一)
查看>>