在编程中我们经常遇到:ClassNotFoundException / NoClassDefFoundError / NoSuchMethodError / NoSuchMethodException这几个异常和错误。
这事由于jvm加载机制不同引起的,如果我们知道这些知识就能快速判断出问题出在哪儿。
ClassNotFoundException:
当应用程序试图通过类的字符串名称,使用以下三种方法装入类,但却找不到指定名称的类定义时抛出该异常,是显式类装载的抛出的异常。
类 Class 中的 forName() 方法。
类 ClassLoader 中的 findSystemClass() 方法。
类 ClassLoader 中的 loadClass() 方法。
NoClassDefFoundError:
如果 Java 虚拟机或 ClassLoader 实例试图装入类定义(作为正常的方法调用的一部分,或者作为使用 new 表达式创建新实例的一部分),但却没有找到类定义时抛出该异常。
NoSuchMethodError:
这是由JVM的“全盘负责委托机制”引发的问题:因为在类路径下放置了多个不同版本的类包,如:commons-lang 2.x.jar和commons-lang3.x.jar 都位于类路径中,代码中用到了 commons-lang3.x.jar 类的某个方法,而这个方法在commons-lang 2.x.jar不存在,而jvm加载类又碰巧从commons-lang 2.x.jar加载类,运行时就会抛出NoSuchMethodError。
NoSuchMethodException:
无法找到某一特定方法时,抛出该异常。
分享到:
相关推荐
类加载工具则是辅助开发者理解和分析类加载过程的实用程序。这些工具可以帮助我们定位类的来源,查看加载顺序,以及优化应用的性能。 标题中的“类加载的工具”可能指的是用于监控和分析类加载过程的各种工具。在...
#### 二、懒加载异常现象及原因分析 在使用懒加载技术时,可能会遇到“LazyInitializationException”这类异常。该异常通常发生在试图访问延迟加载的关联对象时,而此时Session已经关闭的情况。例如,在Hibernate中...
### 使用Java类加载和类路径实现一个简单的在线购物网站 #### 概述 本文将详细介绍如何利用Java的类加载机制和类路径管理来构建一个简易的在线购物网站。该示例通过实现一个`ShoppingCart`类来管理用户的购物车...
当尝试加载一个不存在或者路径不正确的类时,会抛出此异常。解决方法是确认类名是否正确,类路径是否包含该类的.jar文件或目录,以及在不同开发环境(如JBuilder和WTK)之间迁移时注意类路径和包结构的差异。 3. *...
### 在Java中异常分析 #### 一、Java异常体系结构概览 在Java中,所有异常都继承自`java.lang.Throwable`类。这个顶级类分为两大类:`Exception`和`Error`。 1. **Exception**:表示可以通过程序逻辑进行处理的...
Java类加载过程是Java应用程序启动的关键步骤,它涉及到类的加载、链接以及初始化。下面将详细阐述这些步骤。 1. **加载**: 加载阶段是类加载过程的第一步,它的任务是找到类的二进制字节流,并将其加载到Java...
以类加载器示例代码分析: 1. `String.class.getClassLoader()` 返回的是启动类加载器,因为它是JVM自带的核心类。 2. `com.sun.crypto.provider.DESKeyFactory.class.getClassLoader().getClass().getName()` 返回...
通过分析和学习这个例子,你可以更好地理解如何在实际项目中应用懒加载技术。 总的来说,Java Swing中的懒加载`JTree`是一种有效的数据管理策略,尤其是在处理大型数据集时。它可以帮助你构建更高效、响应更快的...
### Java动态加载类知识点总结 Java动态加载类的概念,是指在运行时通过反射机制加载类的...通过以上知识点的梳理和示例分析,我们可以了解到Java动态加载类的基本原理和应用场景,以及如何在实际编程中应用这一技术。
标题“Java加载dll,导致Java进程内存泄露”涉及到的是Java平台与本地库(DLL)交互时可能出现的问题。在Java中,通过Java Native Interface (JNI) 可以调用C/C++编写的动态链接库(DLL),实现Java代码与本地代码的...
在文档《Java常见异常类型及原因分析(下)》中,介绍了几种常见的Java异常类型及其产生原因,并提供了相应的分析。 首先,ArrayIndexOutOfBoundsException异常是在进行数组操作时最常见的异常之一。这个异常发生在...
Java提供了丰富的异常体系,包括标准的Java异常类和自定义异常。 1. **算术异常类:ArithmeticException** - 当程序执行了非法的数学运算,如除以零,就会抛出此异常。 2. **空指针异常类:NullPointerException**...
通过分析和学习这段代码,你可以更深入地理解类加载器的工作原理以及如何自定义类加载器来实现特定需求。 总之,“网络类加载器实现”是一种高级的Java技术,它结合了类加载机制和网络编程,使得Java应用程序具有更...
- **异常概述**:当Java虚拟机尝试加载指定类时找不到对应的类定义,就会抛出`ClassNotFoundException`。 - **典型场景**: - 加载动态生成的类时,类路径(classpath)中不存在所需的类。 - 应用程序依赖的第三方...
在分析Java平台安全性时,通常会涉及多个方面,包括但不限于Java虚拟机的安全性、Java类加载器的安全性、Java语言的安全特性、API的安全性以及安全策略等。Java虚拟机的安全性是确保Java代码在执行过程中不会对宿主...
通过阅读《黑马程序员------类加载器学习注意点》这篇博文,以及对`classLoader.txt`文件的分析,我们可以更深入地掌握类加载器的相关知识,这对于解决实际问题和提升系统性能具有极大的帮助。在实践中不断探索和...
### Java类动态加载机制在铁路互联网售票中的设计与实现 #### 概述 随着铁路互联网售票系统的广泛应用,其面临着越来越高的并发访问压力。为解决这一问题,系统采用分布式内存数据库集群来存储和处理如余票查询、...
3. **类加载信息**:分析工具还可以显示已加载的类信息,这在查找类加载异常或类冲突时非常有用。 4. **JVM参数和配置**:javacore文件通常会包含JVM的启动参数,这对于理解应用程序的配置环境和可能的优化选项很有...
当一个类需要被装载时,加载请求会首先传递给顶级的系统类加载器,然后逐级向下传递,直到找到相应的类或者所有加载器都无法找到时返回异常。 1. **类加载的生命周期** 类的生命周期包括装载(Loading)、验证...