java - 调试时如何处理 ClassNotLoadedException?

标签 java eclipse debugging remote-debugging

所以我正在(远程)在 Eclipse 中调试一个 java/jboss 应用程序,逐行执行。在某一时刻,一个 GridSquare 对象数组(GridSquare 是一个相当简单的独立类,包含一些属性和方法)由方法调用创建,即:

GridSquare[] squares = this.theGrid.getSquares(14, 18, 220, 222);

...当我实际执行代码时,squares 数组确实填充了 GridSquare 对象,但在单步执行代码和调试时我会感到奇怪。在上面显示的赋值之后的行上的断点处,如果我尝试查看 squares 数组,而不是值,我会得到这个:

org.eclipse.debug.core.DebugException: com.sun.jdi.ClassNotLoadedException: 检索数组的组件类型时发生类型未加载。

...有人知道那是什么意思吗?

最佳答案

基本上这意味着类加载器没有加载 GridSquare[] 类。话虽这么说,这在某种程度上听起来像是调试器中的一个错误。与代码的断点关联似乎略有破坏。您需要重新编译以使行号同步,或者出现其他问题。在代码中的那个点(在分配之后)它需要被加载。除非 getSquares 实际上返回一个子类 (GridSquareSubclass[]),此时 JVM 可能还没有加载它,因为它(还)不需要它。

关于java - 调试时如何处理 ClassNotLoadedException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1367730/

相关文章:

c++ - C++ Eclipse 项目无法逆向调试

android - Eclipse 没有检测到我的 Android 设备

java - 访问rest资源时出现404错误

Java 8 将列表按涉及先前元素的条件分组

java - 如果 XML 文档中存在特定的 XML 元素,如何使用 java 检查

java - 如何让Vaadin 10组件根据点击事件一一改变?

c++ - 如何在 nsight eclipse 版本中查看变量值

java - 在 Eclipse Debug模式下复制对象的整个树

c++ - "mangle"(代表)内存的最佳方式

c - 即使使用 -g3 或 -ggdb3 或 -gdwarf-4,GDB 宏符号也不存在