--------------------------------------------------------------------------------------------------
学习: http://www.ibm.com/developerworks/cn/java/j-dclp2.html
--------------------------------------------------------------------------------------------------
要点
1. ClassNotFoundException
出现场合:当应用程序试图通过类的字符串名称,使用以下三种方法装入类,但却找不到指定名称的类定义时抛出该异常。
- 类 Class 中的 forName() 方法。
- 类 ClassLoader 中的 findSystemClass() 方法。
- 类 ClassLoader 中的 loadClass() 方法。
修复方法:确保类路径正确。
2. NoClassDefFoundError
出现场合:如果 JVM 或 ClassLoader 实例试图装入类定义(作为正常的方法调用的一部分,或者作为使用 new 表达式创建新实例的一部分),但却没有找到类定义时抛出该异常。
修复方法:确保类存在。
3. ClassCastException
出现场合:该异常的抛出,表明代码企图把对象的类型转换成一个子类,而该对象并不是这个子类的实例。
修复方法:仔细检查对象要转换到的类型是否符合以下规则:
- 对于普通对象(非数组):对象必须是目标类的实例或目标类的子类的实例。如果目标类是接口,那么会把它当作实现了该接口的一个子类。
- 对于数组类型:目标类必须是数组类型或 java.lang.Object、java.lang.Cloneable 或 java.io.Serializable。
4. UnsatisfiedLinkError
出现场合:对于声明为 native 的方法,如果 Java 虚拟机找不到和它对应的本机语言定义,就会抛出该异常。
修复方法:把库放在合适位置:
- 对于由 bootstrap 类装入器装入的类,搜索 sun.boot.library.path。
- 对于由扩展类装入器装入的类,先搜索 java.ext.dirs,然后是 sun.boot.library.path,然后是 java.library.path。
- 对于由系统类装入器装入的类,搜索 sun.boot.library.path,然后是 java.library.path。
5. ClassCircularityError
出现场合:类或接口由于是自己的超类或超接口而不能被装入。
修复方法:避免循环的类层次结构。
6. ClassFormatError
出现场合:负责指定所请求的编译类或接口的二进制数据形式有误。
修复方法:获得字节码的正确副本,可能需要重新进行编译。
7. ExceptionInInitializerError
出现场合:
- 如果初始化器突然完成,抛出一些异常 E,而且 E 的类不是 Error 或者它的某个子类,那么就会创建 ExceptionInInitializerError 类的一个新实例,并用 E 作为参数,用这个实例代替 E。
- 如果 JVM 试图创建类 ExceptionInInitializerError 的新实例,但是因为出现 Out-Of-Memory-Error 而无法创建新实例,那么就抛出 OutOfMemoryError 对象作为代替。
修复方法:检查造成 ExceptionInInitializerError 的异常(在堆栈跟踪的 Caused by: 下显示)并寻找阻止抛出这个异常的方式。
分享到:
相关推荐
在Java编程语言中,`ClassNotFoundException`是一个非常常见的运行时异常,它属于`java.lang.ClassNotFoundException`,当Java虚拟机(JVM)试图动态加载一个类并无法找到对应的.class文件时,就会抛出这个异常。...
Java中的`ClassNotFoundException`异常通常表示在尝试加载特定类时,JVM无法找到对应的字节码文件。这个异常可能由多种原因引起,但在本场景中,它与Java 9引入的模块系统及其对Java EE API的影响密切相关。 在Java...
Java元数据——Class类 Java中的元数据Class类是一个基础的概念,它代理了这个类的类型信息、方法签名、属性等信息。每个类都有一个Class对象,它用来创建这个类的所有对象。每个对象的创建都依赖于Class对象的创建...
Java 中常见的异常类包括 ArithmeticException、NullPointerException、ArrayIndexOutOfBoundsException、ClassNotFoundException 等。这些异常类都继承自 Exception 或 Error。 在 Java 中,异常处理可以分为两种...
总的来说,理解并解决"java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource"这一异常,不仅需要对Struts框架有一定了解,还需要掌握Java类加载机制以及数据库连接池的基本原理。通过正确...
在Java编程中,`ClassNotFoundException` 是一个常见的运行时异常,通常发生在尝试加载特定类时,JVM无法找到对应类的定义。在这个特定的情景中,错误提示 "java.lang.ClassNotFoundException: ...
这篇博客“Java类动态加载(一)——java源文件动态编译为class文件”可能主要探讨了如何在运行时将Java源代码(.java)编译成对应的字节码文件(.class),并将其加载到Java虚拟机(JVM)中。以下是对这个主题的详细解析...
在Java编程中,`java.lang.ClassNotFoundException`是一个常见的运行时异常,它表示JVM尝试加载一个类时,找不到对应的.class文件。在这个特定的错误中,我们看到的是`org.apache.commons.dbcp.BasicDataSource`,这...
在Java编程中,`java.lang.ClassNotFoundException` 是一个常见的运行时异常,通常发生在尝试通过类加载器加载指定类时,但找不到对应的字节码文件。在这个特定的问题中,`ClassNotFoundException` 引发的原因是缺少...
在Java编程中,`ClassNotFoundException` 是一个常见的运行时异常,通常发生在尝试加载类时,Java虚拟机(JVM)无法找到对应的字节码文件。在本例中,问题聚焦于 "org.jdom.input.SAXBuilder" 类,这涉及到Java的...
"java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver" 解决方案 [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 解决了jsp连接 sql server 2000的问题
- **非运行时异常(受检异常)**:这类异常是程序在编译阶段就需要检查的异常,比如文件未找到异常、网络连接异常等。对于这类异常,开发者必须明确地处理它们,要么通过`try-catch`语句块捕获并处理,要么通过`...
他们提供的见解有助亍理解和解决常见的 Java 异常,例如 NoClassDefFoundError 和 ClassNotFoundException,以及更有挅戓性的问题,例如类装入器约束迗反和死锁。在第 1 部分中,他们详细描述了 Java 类装入的工作...
Java 中常见的异常类 Java 中常见的异常类可以分为多种,下面将对一些常见的异常类进行详细的介绍和分析。 1. NullPointerException(空指针异常) NullPointerException 是 Java 中最常见的异常之一。这个异常的...
这个异常的出现告诉我们,Java 虚拟机无法找到指定的类,导致应用程序无法正常运行。那么,什么原因导致了ClassNotFoundException 的异常呢? 一个常见的原因是,我们在 AndroidManifest.xml 文件中忘记添加 ...
类加载器是 Java 语言的一个创新,也是 ...不过如果遇到了需要与类加载器进行交互的情况,而对类加载器的机制又不是很了解的话,就很容易花大量的时间去调试 ClassNotFoundException和 NoClassDefFoundError等异常。
1. **`java.lang.ClassNotFoundException`**:当类加载器无法找到指定的类时抛出此异常。这种情况下,程序通常需要捕获并处理此类异常,或者通过抛出声明让调用者处理。 示例代码: ```java Class<?> clazz = ...
Java的异常处理机制是Java编程中至关重要的一部分,它主要用于处理程序在运行时可能出现的各种错误和异常情况。这一机制使得开发者能够优雅地处理错误,而不会让整个程序崩溃。以下是关于Java异常处理机制的详细说明...
在Java编程中,`ClassNotFoundException` 是一个常见的运行时异常,表示尝试加载某个类时,在类路径中找不到对应的`.class`文件。在这个特定的场景中,异常堆栈跟踪显示 `Caused by: java.lang....