`
足至迹留
  • 浏览: 494872 次
  • 性别: 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

    - **异常**:当堆内存不足时,抛出`OutOfMemoryError`异常。 2. **虚拟机栈** - **作用**:每个线程都有自己的虚拟机栈,用于执行Java方法。 - **组成部分**:栈帧(Stack Frame),包含局部变量表、操作数栈、...

    类加载器,classload

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

    java classload教程

    Java 类加载机制是Java语言的核心特性之一,它允许程序在运行时动态加载和解析类,极大地增强了灵活性和可扩展性。本文将详细讲解类加载的基础知识、Java虚拟机(JVM)如何使用类加载器以及如何自定义类加载器。...

    classLoad.rar

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

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

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

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

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

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

    在Java开发过程中,为了提高开发效率和调试便捷性,我们经常需要实现类的热替换(Hot Deployment),也就是在不重启应用的情况下更新或替换已加载的类。Java类热替换技术通常涉及类加载器(ClassLoader)的自定义...

    ClassLoader运行机制 自己写的

    在Java虚拟机(JVM)中,类加载器(ClassLoader)是至关重要的组成部分,它负责查找和加载类的字节码文件。理解ClassLoader的工作机制对于深入掌握Java应用程序的运行至关重要。这里我们将详细讨论ClassLoader的运行...

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

    《深入理解Maven类加载器插件:解决插件中的类加载问题》 在Java开发领域,Maven作为一款强大的项目管理和构建工具,扮演着举足轻重的角色。然而,随着项目的复杂度增加,类加载问题时常困扰着开发者。...

    深入Spring Boot之ClassLoader的继承关系和影响

    "深入Spring Boot之ClassLoader的继承关系和影响" Spring Boot中的ClassLoader继承关系是一种复杂的机制,在Spring Boot应用程序中扮演着重要角色。ClassLoader是Java中的一种机制,用于加载类和资源。...

    如何正确的使用Java序列化技术

    当反序列化时,如果当前类的 `serialVersionUID` 与序列化时不同,则会抛出 `InvalidClassException`。 - **静态字段和瞬态字段**:默认情况下,序列化不包括类中的静态字段。同时,可以通过 `transient` 关键字标记...

    用JVM工具接口创建调试和分析代理.docx

    并且支持更多类型的事件通知,如异常、字段访问和修改、断点以及单步执行等。此外,JVMTI的设计更加灵活,对虚拟机(VM)的影响更小,且具有错误返回信息,降低了对VM实现的侵入性。 为了创建一个使用JVMTI的代理,...

    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 5是一款知名的Java应用服务器,其在类加载(Class Loading)方面有着独特的处理方式。随着OSGi(Open Services Gateway Initiative)风格的类加载机制逐渐流行,以及新的Java模块和类加载规范的出现,JBoss对...

    深入探讨 Java 类加载器.pdf

    4. **处理错误**:处理可能出现的各种异常情况,如`ClassNotFoundException`。 #### 类加载器在Web容器和OSGi中的应用 - **Web容器**:现代Web容器(如Tomcat、Jetty等)广泛使用类加载器来支持多应用共存环境下的...

    ClassLoadUtil

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

Global site tag (gtag.js) - Google Analytics