Module jdk.jdi
Package com.sun.jdi

Class ClassNotLoadedException

java.lang.Object
java.lang.Throwable
java.lang.Exception
com.sun.jdi.ClassNotLoadedException
所有已实现的接口:
Serializable

public class ClassNotLoadedException extends Exception
抛出以指示所请求的类尚未通过适当的类加载器加载。

由于许多虚拟机执行的延迟类链接,可能在程序中看到与关联类加载之前的字段或变量。直到加载类为止,所有可用的只是一个签名字符串。如果尝试从JDI设置这样一个字段或变量的值,则无法进行适当的类型检查,因为目标类尚未加载。对于数组元素的元素类也是如此。

不建议尝试通过即时加载类来解决此问题。在调试器加载类而不是等待类在正常事件过程中加载时,存在两个问题。

  • 无法保证运行适当的类加载器不会导致加载类时发生死锁。类加载器可以由任意的Java编程语言代码组成,类加载方法通常是同步的。调试器执行的大部分工作发生在线程暂停时。如果另一个应用程序线程在相同的类加载器内暂停,那么很可能会发生死锁。
  • 更改通常加载类的顺序可能掩盖或显示应用程序中的错误。一个非侵入式的调试器应该努力保持不变的是被调试应用程序的行为。
为避免这些潜在问题,抛出此异常。

请注意,直到相关类的类加载器可见为止,将抛出此异常。(也就是说,相关类的类加载器必须是相关类的启动类加载器。)有关更多详细信息,请参阅Java虚拟机规范

自从:
1.3
参见:
  • Constructor Details

    • ClassNotLoadedException

      public ClassNotLoadedException(String className)
    • ClassNotLoadedException

      public ClassNotLoadedException(String className, String message)
  • Method Details

    • className

      public String className()