文档章节

ClassNotFoundException,NoClassDefFoundError区别

sdl_xx
 sdl_xx
发布于 2016/07/12 16:02
字数 389
阅读 9
收藏 0

    要了解ClassNotFoundException,NoClassDefFoundError区别,首先应该了解 jvm中加载和链接两个步骤,

1.bootstrap加载器加载jvm原生class文件

2.类加载器(user-defined),

(1)系统加载器加载系统class文件到jvm中

(2)用户自定义加载器加载相应类文件,步骤如下

由于每个文件都有自己的加载器,而加载器会根据Java父类子类关系,根据父加载有限或者子加载优先的规则,将加载过程如下:

1.1 某一个class文件先由他的父类classloader加载,如果加载不到,会交由子类加载,如果都加载不到,会报ClassNotFoundException,该错误类在jdk api中描述如下:

The forName method in class Class.
The findSystemClass method in class ClassLoader .
The loadClass method in class ClassLoader.

1.2.由于A类中可能调用B类中的代码,这样A加载器会优先加载B类的class文件,这种加载方式成为加载器代理方式,

Java类链接:

1.链接是指将Java类文件合并到jvm正在运行的状态过程中,

2.链接过程包括:验证,准备,解析:

2.1 验证保证Java类的二进制结构完整,不完整的话会报java.lang.VerifyError错 误,

2.2准备是将Java静态域中的代码设置成默认值,但是不会运行任何代码

2.3解析确保类能够被找到,这个时候比如a类引用b类中的代码,这个时候如果找不到会报NoClassDefFoundError的错误

© 著作权归作者所有

共有 人打赏支持
下一篇: Linux
sdl_xx
粉丝 0
博文 3
码字总数 1183
作品 0
杭州
高级程序员
私信 提问
ClassNotFoundException和NoClassDefFoundError的区别

正如它们的名字所说明的:NoClassDefFoundError是一个错误(Error),而ClassNOtFoundException是一个异常,在Java中错误和异常是有区别的,我们可以从异常中恢复程序但却不应该尝试从错误中恢...

一条大河波浪宽
2013/10/05
0
0
ClassNotFoundException和NoClassDefFoundError

定义: 对于术语的定义,最原汁原味的还是官方文档。 关于ClassNotFoundException,JavaDoc里这么描述: Thrown when an application tries to load in a class through its string name us...

摆渡者
2016/07/20
90
0
NoClassDefFoundError和ClassNotFoundException区别

很容易把java.lang.NoClassDefFoundError和java.lang.ClassNotfoundException这两个错误搞混,事实上这两个错误是完全不同的。 NoClassDefFoundError错误发生的原因 NoClassDefFoundError错误...

_上善_若水_
04/17
0
0
NoClassDefFoundError问题

问题: 遇到一个问题,报NoClassDefFoundError,如下图: NoClassDefFoundError和ClassNotFoundException区别 我们经常被java.lang.ClassNotFoundException和java.lang.NoClassDefFoundErro......

yysue
05/31
0
0
【eclipse】 怎么解决java.lang.NoClassDefFoundError错误

前言 在日常Java开 发中,我们经常碰到java.lang.NoClassDefFoundError这样的错误,需要花费很多时间去找错误的原因,具体是哪个类不见了?类 明明还在,为什么找不到?而且我们很容易把jav...

无信不立
2017/02/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20181213 上课截图

小丑鱼00
9分钟前
0
0
nginx+php-fpm配置后页面显示空白的解决方法以及用nginx和php-fpm解决“502 Bad Gateway”问题

https://stackoverflow.com/questions/15423500/nginx-showing-blank-php-pages For reference, I am attaching my location block for catching files with the .php extension: location ~......

Yao--靠自己
16分钟前
1
0
mac 没声音

somehow不时就会出现这种情况。之前都得重启。 其实可以直接在terminal里打以下命令: sudo kextunload /System/Library/Extensions/AppleHDA.kext sudo kextload /System/Library/Extension...

dubox
32分钟前
1
0
看完让你彻底搞懂Websocket原理

作者:Ovear 链接:https://www.zhihu.com/question/20215561/answer/40316953 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 额。。最高票答案没答到点...

时刻在奔跑
47分钟前
2
0
Spring Cloud Stream消费失败后的处理策略(一):自动重试

之前写了几篇关于Spring Cloud Stream使用中的常见问题,比如: 如何处理消息重复消费 如何消费自己生产的消息 下面几天就集中来详细聊聊,当消息消费失败之后该如何处理的几种方式。不过不论...

程序猿DD
49分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部