模块 jdk.jdi

类 ClassNotLoadedException

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

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

由于许多 VM 执行惰性类链接,因此在加载关联类之前,字段或变量可能在程序中可见。在加载类之前,所有可用的都是签名字符串。如果尝试从 JDI 设置此类字段或变量的值,则无法进行适当的类型检查,因为尚未加载目标类。数组元素的元素类也是如此。

在这种情况下,通过尝试动态加载类来解决此问题是不可取的。让调试器加载一个类而不是等待它在正常的事件过程中加载有两个问题。

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

请注意,将抛出此异常,直到所讨论的类对封闭类的类加载器可见为止。 (也就是说,封闭类的类加载器必须是启动相关类的类加载器。)参见Java 虚拟机规范更多细节。

自从:
1.3
参见:
  • 构造方法详细信息

    • ClassNotLoadedException

      public ClassNotLoadedException(String  className)
    • ClassNotLoadedException

      public ClassNotLoadedException(String  className, String  message)
  • 方法详情

    • className

      public String  className()