`
足至迹留
  • 浏览: 485305 次
  • 性别: Icon_minigender_1
  • 来自: OnePiece
社区版块
存档分类
最新评论

classload抛出的异常

 
阅读更多
在实际的应用中,jvm类加载过程会抛出这样那样的异常,掌握各种异常产生的原因是很重要的,下面看几个常见异常。

1. ClassNotFoundException
这是最常见的异常,产生这个异常的原因是当前的ClassLoader中加载类时未找到类文件。对于System ClassLoader的类很容易判断,只要加载的类部在classPath中就会抛这个异常,而对于User-Defined ClassLoader的类则麻烦些,要具体查看这个ClassLoader加载类的过程,才能判断此ClassLoader要从什么位置加载此类。

2.NoClassDefFoundError
该异常比上面的ClassNotFoundException更难处理一些,造成此异常的主要原因是加载的类中[b]引用到的另外的类不存在[/b]。例如要加载A类,而A中调用了B,B不存在或当前ClassLoader没法加载B,就会抛出这个异常。
例如:
public class A
{
    private B b = new B();
}

当采用Class.forName加载A时,虽能找到A.class,但此时B.class不存在,则会抛出NoClassDefFoundError。
因此,对于这个异常,须先查看是加载哪个类时报出的,然后再确认该类中引用的类是否存在于当前ClassLoader能加载到的位置。

3.ClassCastException
该异常有很多原因,在jdk 5支持泛型后,合理使用泛型可相对减少此异常的触发。这些原因中比较难查的是两个A对象由不同的ClassLoader加载的情况,这时如果将其中某个A对象转型成另外一个A对象,也会抛出ClassCastException.

参考资料:
《分布式java应用基础与实践》
0
1
分享到:
评论

相关推荐

    JAVA内存结构-GC-CLASSLOAD

    JAVA内存结构-GC-CLASSLOAD

    类加载器,classload

    关于类加载器的 上课ppt -java虚拟机自带的加载器 根类加载器(Bootstrap) c++写的看不到扩展类加载器(extension) 系统类加载器(System) AppClassLoad 用户自定义的类加载器 Java.lang.ClassLoader的子类

    java classload教程

    这篇文章从基础讲起,比如代码与数据的不同之处是什么,他们是如何构成一个实例或对象的。然后深入探讨java虚拟机(JVM)是如何利用类加载器读取代码,以及java中类加载器的主要类型。接着用一个类加载的基本算法看...

    classLoad.rar

    在java中 当你用一个类加载器 去加载一个类的时候 这个类里面所有的出现的过得类 都会通过这个类加载器加载在这个类后续 的操作中,只要是有由这个类衍生出的 那么涉及的类 都由这个类加载器进行加载 该类加载器为...

    java面试难点讲解:hashmap,spring aop,classload,dubbo,zookeeper,session等。

    面试必考之HashMap源码分析与实现 探索JVM底层奥秘ClassLoader源码分析与案例讲解 面试必备技能之Dubbo企业实战 ...互联网系统垂直架构之Session解决方案 分库分表之后分布式下如何保证ID全局唯一性 ...

    Java类热替换(热部署)源码

    Java 自定义ClassLoader 实现类的热替换核心代码

    ClassLoader运行机制 自己写的

    ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的ClassLoader运行机制 自己写的

    破解java加密的ClassLoader.java,在classloader植入破解代码

    破解java加密的ClassLoader.java,在classloader植入破解代码

    java虚拟机 ppt

    java虚拟机 classload机制,保护域,访问控制,生命周期

    java类加载器

    ClassLoader 三种类加载方式 Boostrap Extenxsion 以及Application ClassLoad分别适用的场景

    maven-classloader-plugin:只是针对Maven插件中的类加载问题的实验

    Maven的类加载器插件只是针对Maven插件中的类加载问题的实验

    [百度安全中心博客-neobyte]Struts2 S2-020在Tomcat 8下的命令执行分析1

    %>在tomcat 8.0.3下Struts2.3.16的blank app中执行这段jsp,输出结果如下:(省略部分非相关属性)class.classLoad

    面试-Java基本知识点1

    2.3 equal和==区别3 JVM内存结构Java对象实例化过程中,主要使用到虚拟机栈、Java堆和方法区 3.1 JVM基本结构类加载器classLoad

    Java虚拟机类加载机制?案例分析

    在《Java虚拟机类加载机制》一文... package jvm.classload; public class StaticTest { public static void main(String[] args) { staticFunction(); } static StaticTest st = new StaticTest(); static {

    JavaSE:JavaSE演示

    JavaSE ...│ ├─classLoad │ │ ├─ClassCypher.java │ │ ├─ClassLoadDemo.java │ │ ├─EncryptedCalss.java │ │ └─MyClassLoad.java │ └─designPattern │ ├─decorator <d

    android-saf-plugin-demo:android插件和saf

    基于SAF和第三方Plugin库的 插件1 依赖的plugin库目前此插件项目支持SAF框架,但是不能使用SAF框架中的基类如SAFapp等,可能导致和宿主基类冲突(同名,但是不属于一个Classload)不能识别。建议可以在plugin项目中...

    jboss 5 原理 2 classloader

    JBoss has always had a unique way of dealing with classloading, and the new classloading layer that comes with Microcontainer is no exception (keep in mind that you can use Microcontainer without ...

    ClassLoadUtil

    类加载工具,用于java项目中动态加载需要的类库

    Android插件框架Android-Plugin-Framework.zip

    App安装时,系统会扫描app的Manifest并缓存到一个xml中,activity启动时,系统会现在查找缓存的xml,如果查到了,再通过classLoad去load这个class,并构造一个activity实例。那么我们只需要将classload加载这个class...

    algorithm-blog:此库用于练习

    classload是用类加载器实现jar细节隐藏的一个想法,其中EvlJar为替换用到的文件 go-socket为golang实现socket,包含TCP和UDP实现 出现了找不到类加载器的问题,似乎是环境问题2021-2-12 已解决参数错误2021-2-13 ...

Global site tag (gtag.js) - Google Analytics