`
lvjun106
  • 浏览: 437060 次
  • 性别: Icon_minigender_1
  • 来自: 芜湖
社区版块
存档分类
最新评论

CLASS动态类加载报NoClassDefFoundError

阅读更多
项目中遇到一个defect。
代码所示:
class Singleton {
    static {
        this.variable = XXXUtil.method();
    }

    private Singleton instance = new Singleton();

    public static Singleton getInstance() {...}

}

class XXXInvokeClass {
    void xxxMethod() {
        Singleton.getInstance();
    }
}


出错提示在xxxMethod()方法这里,总是报NoClassDefFoundError
经调试,是class被jvm首次加载时,初始化静态定义时出了错,是XXXUtil类没有method方法,即NoSuchMethodException,但是LOG日志并未直接写出来。
代码编译通过,运行出错,原因是XXXUtil过期,未被服务器加载到最新的代码所致。

通过此defect又重温了一遍java class类加载机制。
http://onjava.com/pub/a/onjava/2005/01/26/classloading.html
分享到:
评论

相关推荐

    类加载机制1

    Java 类加载机制是Java语言的核心特性之一,它允许程序在运行时动态地加载和执行类。这个机制在Java 1.0版本时引入,最初是为了支持Java Applet,即可以在Web浏览器中运行的小型Java应用程序。随着时间的发展,类...

    java类加载器1

    Java 类加载器是Java语言的核心特性之一,它允许程序在运行时动态地加载类到Java虚拟机(JVM)中。这一特性对于实现模块化、插件化和动态部署等功能至关重要。类加载器的设计遵循“分层加载”原则,形成了一个树状的...

    JAVA的类加载器的工作原理.docx

    正确理解类加载器能够帮你解决NoClassDefFoundError和java.lang.ClassNotFoundException,因为它们和类的加载相关。类加载器通常也是比较高级的JAVA面试中的重要考题,JAVA类加载器和工作原理以及classpath如何运作...

    深入探讨 Java 类加载器

    1. **加载**:加载阶段,类加载器找到指定类的字节码,这可以通过读取磁盘上的.class文件或从网络上获取。 2. **验证**:确保字节码符合Java语言规范,不会对JVM造成危害。 3. **准备**:分配内存并初始化静态变量的...

    JAVA的类加载器的工作原理.pdf

    正确理解类加载器能够帮你解决 NoClassDefFoundError 和 java.lang.ClassNotFoundException,因为它们和类的加载相关。类加载器通常也是比较高级的 Java 面试中的重要考题,Java 类加载器和工作原理以及 classpath ...

    深入理解java类加载机制

    但是,不恰当的类加载器使用可能导致`ClassNotFoundException`和`NoClassDefFoundError`等错误,因此理解和掌握类加载器的工作原理对于处理这些问题至关重要。 总之,深入理解Java类加载机制对于Java程序员来说非常...

    java深度历险,介绍java类的加载

    1. **加载**:这是类加载的第一步,JVM通过类加载器找到对应的.class文件。类加载器分为引导类加载器、扩展类加载器和应用程序类加载器,它们按照双亲委派模型工作,保证了类的唯一性。 2. **验证**:验证是确保....

    性能调优专题-jvm类加载机制-performance-jvmclassloader.zip

    在实际项目中,我们可以通过控制类加载时机、使用动态代理、优化类路径等方式进行性能调优。例如,通过延迟加载(Lazy Loading)减少启动时的资源占用,或者通过CGLIB等库实现运行时代码生成。 总结,JVM类加载...

    java.lang.NoClassDefFoundError: org/jboss/logging/

    Java编程中的`java.lang.NoClassDefFoundError: org/jboss/logging/`是一个常见的运行时错误,通常发生在尝试执行一个类时,JVM无法找到在编译时已经存在的类定义。这个错误并不意味着类在编译期间不存在,而是表明...

    JVM类加载跟踪器

    JVM类加载跟踪器,用于排查jar包冲突、类冲突、类版本冲突、NoClassDefFoundError、ClassNotFoundException 等等类加载相关问题的辅助工具

    java.lang.NoClassDefFoundError:

    这表明在Spring Web应用上下文初始化阶段,尝试加载`org.apache.commons.logging.LogFactory`类时发生了`NoClassDefFoundError`。进一步地,我们可以看到在更早的日志中有关于Apache Tomcat Native库未找到的提示,...

    出现Exception in threadmain java.lang.NoClassDefFoundError的各种可能情况.doc

    在Java编程中,遇到“Exception in thread 'main' java.lang.NoClassDefFoundError”是一种常见的异常情况,这通常意味着JVM在运行时未能找到指定的类定义。此错误不同于ClassNotFoundException,后者发生在尝试加载...

    Java_ClassLoader详解

    深入理解类加载机制对于开发高质量的 Java 应用程序至关重要,特别是在处理多层架构、模块化设计以及动态加载类等场景下。 通过上述分析,我们对 Java 中的类加载机制有了更深入的理解,这对于解决常见的 `...

    Java Class Loader总结.doc

    Java 类加载器(ClassLoader)是Java虚拟机的重要组成部分,它负责将Java字节码(.class文件)加载到JVM中并转化为`java.lang.Class`的实例,使得我们能够运行Java程序。Java的类加载机制遵循双亲委托模型,这是一种...

    java.lang.NoClassDefFoundError错误解决办法

    ClassNotFoundException是在编译的时候在classpath中找不到对应的类而发生的错误,而NoClassDefFoundError是在JVM在动态运行时,根据你提供的类名,在classpath中找到对应的类进行加载,但当它找不到这个类时,就...

    Exception in thread main java.lang.NoClassDefFoundError错误解决方法

    这个错误很容易让人误解为是`ClassNotFoundException`,但实际上它们之间有区别:`ClassNotFoundException`是在类加载器尝试加载特定类但找不到对应的.class文件时抛出的,而`NoClassDefFoundError`则是在类已经被...

    java关于找不到类的错误

    4. **类的查找过程**:JVM根据`classpath`指定的路径查找类文件,通过`-verbose:class`选项可以观察类的加载过程。 理解这些概念对于解决Java开发中的类加载问题非常重要。希望本文能够帮助开发者更好地理解和解决...

    Android 出现:java.lang.NoClassDefFoundError...错误解决办法

    这个错误通常意味着在编译期间能够找到类的定义,但在运行时却无法加载该类。本文将深入探讨这个问题,特别是在Android环境中如何解决`java.lang.NoClassDefFoundError: android/os/PersistableBundle`这个特定错误...

    在BEA WebLogic Server上开发应用程序的20条技巧

    1. **类加载器机制**:NoClassDefFoundError通常由于类加载器的问题引起,比如父类加载器尝试加载子类加载器才能找到的类。WebLogic遵循"parent-first"策略,优先从系统类路径加载类,但可通过`prefer-web-inf-...

    深入JVM内核—原理、诊断与优化视频教程-6. 类装载器

    在Java虚拟机(JVM)中,类装载器(ClassLoader)是至关重要的组成部分,它负责查找和加载Java类到JVM内存中。本教程聚焦于深入理解JVM内核,特别是类装载器的原理、诊断与优化。在这个第六部分中,我们将探讨以下几...

Global site tag (gtag.js) - Google Analytics