版权声明:本文为博主原创文章,无需授权即可转载,甚至无需保留以上版权声明,转载时请务必注明作者。
https://blog.youkuaiyun.com/weixin_43453386/article/details/84586063
解决——》NoClassDefFoundError
1、操作
运行java程序
2、现象(错误信息)
Exception in thread "main" java.lang.NoClassDefFoundError
3、原因
Java虚拟机在编译时能找到合适的类,而在运行时不能找到合适的类导致的错误
NoClassDefFoundError:运行时,在classpath中找到对应的类进行加载,但当它找不到这个类时,就报错
ClassNotFoundException:编译时,在classpath中找不到对应的类而发生的错误
4、解决
需要把对应的类加载到classpathg下
1)检查为什么类在classpath中是不可用的,可能的原因如下:
- 对应的class在java的classpath中不可用
- 可能用jar命令运行你的程序,但类并没有在jar文件的manifest文件中的classpath属性中定义
- 当发生由于缺少jar文件,或者jar文件没有添加到classpath,或者jar的文件名发生变更会导致java.lang.NoClassDefFoundError的错误
- 可能程序的启动脚本覆盖了原来的classpath环境变量,但如果在程序中打印出System.getproperty(“java.classpath”),可以得到程序实际运行的classpath
- NoClassDefFoundError是java.lang.LinkageError的一个子类,所以可能由于程序依赖的原生的类库不可用而导致
- 检查日志文件中是否有java.lang.ExceptionInInitializerError这样的错误,NoClassDefFoundError有可能是由于静态初始化失败导致的
- 如果你工作在J2EE的环境,有多个不同的类加载器,也可能导致NoClassDefFoundError