--------------------------------------------------------------------------------------------------
学习: 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 找不到指定类时发生的异常(ClassNotFoundException)
java 9 中引入了模块的概念,默认情况下,Java SE中将不再包含java EE 的Jar包 而在 java 6/7 / 8 时关于这个API 都是捆绑在
"java.lang.ClassNotFoundException: com.microsoft.jdbc.sqlserver.SQLServerDriver" 解决方案 [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 解决了jsp连接 sql server 2000的问题
JSON转化时出现 java.lang.ClassNotFoundException: net.sf.ezmorph.MorpherRegistry
struts初学者的数据池配置出现java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource异常的解决办法
整个系统都没有错误,但是在发布运行后,控制台上却抛出了这样的异常: java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource
他们提供的见解有助亍理解和解决常见的 Java 异常,例如 NoClassDefFoundError 和 ClassNotFoundException,以及更有挅戓性的问题,例如类装入器约束迗反和死锁。在第 1 部分中,他们详细描述了 Java 类装入的工作...
类加载器是 Java 语言的一个创新,也是 ...不过如果遇到了需要与类加载器进行交互的情况,而对类加载器的机制又不是很了解的话,就很容易花大量的时间去调试 ClassNotFoundException和 NoClassDefFoundError等异常。
NULL 博文链接:https://redarmychen.iteye.com/blog/463864
Java异常架构与异常关键字 Java异常简介 Java异常架构 1. Throwable 2. Error(错误) 3. Exception(异常) 运行时异常 编译时异常 4. 受检异常与非受检异常 受检异常 非受检异常 Java异常关键字 Java异常处理 声明...
NULL 博文链接:https://chimpp55.iteye.com/blog/2344330
Android Caused by: java.lang.ClassNotFoundException解决办法 ...我想大家经常因为疏忽出现ClassNotFoundException的异常,这个异常在Android开发中无非就是告诉你类没有找到,那么什么原因导致没找到呢? 其
java发布wsdl部署到was 8.5报错的时候引入的jar包,比如如下情况: Caused by: java.lang.NoClassDefFoundError: com.sun.org.apache.xml.internal.resolver.CatalogManager at ...
JSP中ClassNotFoundException异常的解决办法.pdf 学习资料 复习资料 教学资源
主要介绍了Caused by: java.lang.ClassNotFoundException: org.objectweb.asm.Type异常,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
a面试大全2021是一套最新Java面试必问合集,这本面试手册包含了Java基础、Java集合、JVM、Spring、Spring Boot、Spring Cloud、Mysql、Redis、RabbitMQ、Dubbo、Netty、分布式及架构设计等方面的技术点。内容难度...
7.2 异常与异常类 7.2.1 Java异常体系结构 Java中的异常有很多类型,包括在Java API中已经被定义的异常(也称系统异常)和用户自定义异常。所有的异常类都直接或间接继承了Throwable类。Throwable类是Object类的...
类加载器是 Java 语言的一个创新,也是 ...不过如果遇到了需要与类加载器进行交互的情况,而对类加载器的机制又不是很了解的话,就很容易花大量的时间去调试 ClassNotFoundException和 NoClassDefFoundError等异常。